Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Laravel 5.6.
Есть четыре таблицы: Templates, Items, Orders и Item_order.
Templates и Items связывает отношение один-ко-многим (элементы items наследуют шаблоны templates).
Orders и Items - многие-ко-многим.
Поля в таблицах (id не стал писать):
Templates { name };
Items { template_id, size, price };
Orders { status };
Item_order { order_id, item_id, items_count };
Задача вывести JSON-массив всех заказов вида:
[
{ "status" : 0,
"items" : [
{"name":"Пицца foo", "size":"30см", "price":200, "count":2},
{"name":"Ролл bar", "size":"100гр", "price":300, "count":1}
]
},
{ "status" : 1,
"items" : [
{"name":"Пицца foo", "size":"40см", "price":300, "count":3}
]
}
]
Сейчас я это делаю строкой
\App\Order::with('items.template')->get();
но получаю вложения .."items": [{... , "template":{....}}, {... , "template":{....}},]
и не знаю, как вставить поле "count" из pivot-таблицы.
Использовать большой конструктор запросов?
Помогите, пожалуйста
Не в сети
Нашёл решение. Просто дорабатываю массив ручками, используя foeach.
//форматируем массив
foreach ($orders as $order){
foreach ($order->items as $item){
$item->name=$item->template->name;
$item->count=$item->pivot->items_count;
unset($item->template);
unset($item->pivot);
}
}
А данные из Pivot получил, прописав withPivot('items_count') при объявлении отношения в модели заказов.
Не в сети
Страницы 1