Я создаю систему управления заказами в Laravel 5.3. Я храню заказы в двух разных таблицах - orders, order_content. Первый содержит основные данные заказа, второй - содержание. Я использую пакет Crinsane's Shopping Cart для управления содержимым заказа. Поля таблицы содержания заказа: идентификатор, экземпляр, содержание. Поле содержимого содержит коллекцию с содержимым определенного порядка, по которому выполняется поиск.
Моя проблема заключается в следующем - мне нужно получить все содержимое заказа (название продукта, код, количество) в определенную дату.
Вот как далеко я зашел:
public function showByDate()
{
$datetime_today = new DateTime('now');
$date = $datetime_today->format('Y-m-d');
//get all orders by date, which are confirmed
$orders = Pasutijums::where('pasutijums_uz', '=', $date)
->where('ir_apstiprinats', '=', 1)->get();
foreach($orders as $order)
{
// get order's content
$order_contents = DB::table('order_content')->where('instance', '=', $order->pasut_num)->get();
foreach($order_contents as $order)
{
// unserialize the content field
$collection = unserialize($order->content);
}
}
$items = $collection->all();
return view('admin.kopsavilkumi.pec-datuma')
->with('orders', $orders)
->with('date', $date)
->with('items', $items)
;
}
В представлении я пытаюсь просмотреть содержимое заказа, но отображается только один продукт ...
@foreach($items as $order)
<tr>
<td class = "text-primary"> {{ $order->options->code }} </td>
<td> {{ $order->name }} </td>
<td> {{ $order->qty }} </td>
</tr>
@endforeach
Мне нужно десериализовать каждое поле, сохранить его в коллекции и передать для просмотра, чтобы я мог просмотреть их и показать в таблице.
ОБНОВИТЬ: Ответ Уолтера Сехаса сработал для меня, но теперь мне нужно получить доступ к содержимому коллекции в моем представлении ... Это то, что я получаю, когда dd ($ collection) в контроллере:
Collection {#292 ▼
#items: array:2 [▼
0 => Collection {#307 ▼
#items: array:2 [▼
"da951a56dc871db7b48a41f7d14b007b" => CartItem {#308 ▼
+rowId: "da951a56dc871db7b48a41f7d14b007b"
+id: "22"
+qty: "1"
+name: "Preces nosaukums 1"
+price: 7.5
+options: CartItemOptions {#309 ▶}
-associatedModel: null
-taxRate: 0
+"priceTax": 7.5
}
"138ba08bdbf1ac8f17e9e6f257af1b88" => CartItem {#310 ▼
+rowId: "138ba08bdbf1ac8f17e9e6f257af1b88"
+id: "123"
+qty: "1"
+name: "Preces nosaukums 2"
+price: 1.8
+options: CartItemOptions {#311 ▶}
-associatedModel: null
-taxRate: 0
}
]
}
1 => Collection {#306 ▼
#items: array:1 [▼
"da951a56dc871db7b48a41f7d14b007b" => CartItem {#312 ▼
+rowId: "da951a56dc871db7b48a41f7d14b007b"
+id: "22"
+qty: "1"
+name: "Preces nosaukums 3"
+price: 7.5
+options: CartItemOptions {#314 ▶}
-associatedModel: null
-taxRate: 0
}
]
}
]
}
Спасибо за ответ. Да, я подумал об этом и попытался по-другому сохранить их в другом, но это не сработало.






Это потому, что вы переопределяете коллекцию последним элементом итерации
$datetime_today = new DateTime('now');
$date = $datetime_today->format('Y-m-d');
//get all orders by date, which are confirmed
$orders = Pasutijums::where('pasutijums_uz', '=', $date)
->where('ir_apstiprinats', '=', 1)->get();
$collection = collect();
foreach($orders as $order)
{
// get order's content
$order_contents = DB::table('order_content')->where('instance', '=', $order-
>pasut_num)->get();
foreach($order_contents as $content)
{
// unserialize the content field
$collection->push(unserialize($content));
}
}
Спасибо, это сработало! Но как мне теперь получить к ним доступ в моем представлении? Обновлен вопрос с текущим выводом при сборе dd () в контроллере.
@ unity115 Если ответ помог, примите его и проголосуйте за него. Если у вас есть новый вопрос, задайте новый вопрос.
Здорово! Вы можете отметить мой вопрос как ответ, если он есть! Сделайте @foreach, если вы используете лезвие, также, возможно, вы хотите прикрепить коллекцию элементов к каждому заказу, в фактическом состоянии вы получаете все элементы в одной коллекции
Вы получаете только 1 элемент, потому что вы перезаписываете
$collectionв своем цикле.