У меня странная проблема, с которой я не могу справиться. У меня есть простое приложение для магазинов в Laravel и Vue / Vuex для внешнего интерфейса.
Моя Order
модель имеет отношение hasMany
:
public function items()
{
return $this->hasMany(OrderItem::class);
}
и все в порядке.
Я делаю GET /orders/
запрос от действия vuex, чтобы получить orders
от Laravel. Это мое OrderController@index
действие:
// Return JSON response if wantsJson otherwise just show View.
if ($this->request->wantsJson()) {
$orders = Order::with(['client', 'items'])->orderBy('id', 'desc')->get();
return response()->json($orders);
}
return view('panel.orders.index');
Как мы можем видеть ниже, оно работало как исключение - вернул ответ JSON с orders
.

Каждое order
имеет два $appends
поля: total_net
& total_net_after_discounts
и его методы: getTotalNetAttribute()
& getTotalNetAfterDiscountsAttribute()
.
Для $appends
вычислений мне нужноitems
предметы отношений. Поэтому внутри getTotalNetAttribute()
метода я пытаюсь получить элементы отношения:
public function getTotalNetAttribute()
{
$items = $this->items;
}
Когда я просто добавляю $this->items
в метод, я получаю ответ: ERR_CONNECTION_RESET . Весь мой ответ после этого нарушается. Я даже не могу войти:
public function getTotalNetAttribute()
{
logger($this->items); // it just breaking up my response: ERR_CONNECTION_RESET
}

Еще одна странная вещь заключается в том, что она работает в tinker
. Я имею в виду, я могу использовать $this->items
, суммировать их цены и получить $order->total_net
значение без проблем.
РЕДАКТИРОВАТЬ: Я нашел обходной путь:
public function getNetPriceAttribute()
{
$orderItems = $this->hasMany(OrderItem::class)->get();
return $orderItems->sum(function ($item) {
return $item->net_price;
});
}