Создание общей как дисперсии экземпляра
protected $total;
затем изменить функцию этой
public function total()
{
$this->total = $this->subtotal();
foreach ($this->lineItems as $l) {
$this->total += $l->amount;
}
return $this;
}
затем создать отформатированный функцию
public function formated()
{
return number_format($this->total, 2)
}
теперь вы можете цепи функция как
$order->total()->formated()
** Обновлено **
вы можете вернуть как общее и промежуточные итоги в отформатированный функции
public function formated()
{
return [
"total" => number_format($this->total, 2),
"subtotal" => number_format($this->subtotal, 2)
];
}
** или **
вы можете использовать одну переменную экземпляра как для общего, так и для промежуточного уровня. пусть имя этого varibles myTotals
protected $myTotals;
public function total()
{
$this->myTotals = $this->subtotal();
foreach ($this->lineItems as $l) {
$this->myTotals += $l->amount;
}
return $this;
}
public function subTotal()
{
$this->myTotals = $this->subtotal();
foreach ($this->lineItems as $l) {
$this->myTotals += $l->amount;
}
return $this;
}
public function formated()
{
return number_format($this->myTotals, 2)
}
так что в этом случае вы можете позвонить
$order->total()->formated() // and this will return the total
$order->subTotal()->formated() // and this will return the subtotal
Невозможно, но я бы порекомендовал его. Вам понадобится раздуть вашу модель с большим количеством дополнительной логики для этих методов, которые не имеют ничего общего с базой данных. Возможно, посмотрите [accessors] (https://laravel.com/docs/5.3/eloquent-mutators # define-a-accessor) для этих типов «вычисленных атрибутов». Однако, если вы действительно хотите сделать это цепочкой [здесь хороший старт] (http://stackoverflow.com/questions/3724112/php-method-chaining) – devk
Я не хочу добавлять 'number_format ($ numberHere, 2) 'Каждая строка, которую я хочу вывести, итоговая сумма или промежуточный итог или суммы скидки или налога. Вот почему я хочу реализовать это здесь. Или если вы предложите другое (лучшее) решение? – Buglinjo