【发布时间】:2018-10-10 12:27:08
【问题描述】:
我的过滤查询看起来像这样。
public function index( Request $request ) {
$dateFrom = $request->get( 'dateFrom' );
$dateTo = $request->get( 'dateTo' );
$status = $request->get( 'orderState' );
$orders = ( new OrderList() )
->whereHas( 'orderDetail', function ( $query ) {
$query->where( 'supplier_id', Auth::guard( 'supplier' )->user()->id );
} )
->with( 'deliveryList' )
->with( 'orderDetail' )
->when( $dateFrom, function ( $query ) use ( $dateFrom, $dateTo ) {
$query->whereBetween( 'created_at', [ $dateFrom, $dateTo ] );
} )
->when( $status, function ( $query ) use ( $status ) {
$query->where( 'order_state_id', $status )->get();
} )->get();
$productList = $orders->orderDetail;
dd( $productList );
//Order Status
$orderStates = OrderState::listsTranslations( 'states' )->pluck( 'states', 'id' )->toArray();
return view( 'supplierComponents.order_list', compact( 'orders', 'orderStates' ) );
}
现在此查询将输出包含订单详细信息的订单列表。 我需要的是对每个订单中的产品进行分组并获取数量
最后一个视图应该是这样的
产品名称 数量 ------------------------------------------- 茶 5 ------------------------------------------- 果汁 3 -------------------------------------------我的模特 订单号
public function orderDetail() {
return $this->hasMany( OrderDetail::class, 'order_id' );
}
更新
以为我永远不会从 controller 得到正确的方法,我没想过直接将它放入刀片中
所以我所做的就是转移到刀片上,试图让它在那里。
我做了什么
@foreach($orders as $order)
@foreach($order->orderDetail as $items)
<tr>
<td>{!! $items->quantity !!}</td>
<td>{!! $items->product_name !!}</td>
</tr>
@endforeach
@endforeach
现在我正在列出我需要的所有产品,但请尝试Group 他们
像这样
@foreach($orders as $order)
@foreach($order->orderDetail->groupBy('product_id') as $items)
<tr>
<td>{!! $items->quantity !!}</td>
<td>{!! $items->product_name !!}</td>
</tr>
@endforeach
@endforeach
得到:此集合实例上不存在属性 [数量]。
【问题讨论】:
-
你可以给我们展示你的模型,以了解与
product的关系 -
@arun 这里没有产品型号,
OrderDetail包含产品详细信息。我刚刚将它添加到我的问题中。 -
quantity你在哪个表中? -
我在
order_details有它
标签: laravel eloquent laravel-5.4