Laravel 5 - 从集合中获取值并传递给视图
Laravel 5 - Getting values from collection and passing to view
我正在 Laravel 5.3 中构建一个订单管理系统。
我将订单存储在两个不同的 table 中 - 订单,order_content。
第一个包含订单的主要数据,另一个 - 内容。我正在使用 Crinsane 的购物车包来管理订单内容。订单内容table字段:标识符、实例、内容。 Content 字段包含序列化的特定订单内容的集合。
我的问题如下 - 我需要在特定日期获取所有订单内容(产品名称、代码、数量)。
这是我的进展:
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
我需要反序列化每个字段,将其保存在集合中并将其传递给视图,这样我就可以遍历它们并在 table 中显示它们。
更新:
Walter Cejas 的回答对我有用,但现在我需要在我的视图中访问集合的内容......这就是我在控制器中 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));
}
}
我正在 Laravel 5.3 中构建一个订单管理系统。 我将订单存储在两个不同的 table 中 - 订单,order_content。 第一个包含订单的主要数据,另一个 - 内容。我正在使用 Crinsane 的购物车包来管理订单内容。订单内容table字段:标识符、实例、内容。 Content 字段包含序列化的特定订单内容的集合。
我的问题如下 - 我需要在特定日期获取所有订单内容(产品名称、代码、数量)。
这是我的进展:
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
我需要反序列化每个字段,将其保存在集合中并将其传递给视图,这样我就可以遍历它们并在 table 中显示它们。
更新: Walter Cejas 的回答对我有用,但现在我需要在我的视图中访问集合的内容......这就是我在控制器中 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));
}
}