错误代码 :
SQLSTATE [42000]:语法错误或访问冲突:1055'schoolstore_laravel.sells.xid'不在GROUP BY中(SQL:选择sells
。*,items
。item_title
,items
。item_id
,group_concat(items.item_title SEPARATOR“,”)来自sells
上的items
内部联接sells
。item_id
= items
。item_id
其中sells
。created_at
类似于2018-04-14按sells
。ticket_number
分组的百分比)
代码是
$buyLists = Sell::join('items', 'sells.item_id', '=', 'items.item_id')
->select('sells.*', 'items.item_title', 'items.item_id')
->selectRaw(DB::raw('group_concat(items.item_title SEPARATOR ", ")'))
->where('sells.created_at', 'like', $timeCheck->format('Y-m-d') . '%')
->groupBy('sells.ticket_number')
->get();
刀片代码
@foreach($groupedBuyLists as $ticketNumber => $sells)
<tr>
<td>{{ $ticketNumber }}</td>
<td>{{ $title = implode(', ', $sells->pluck('item_title')->all()) }}</td>
<td>{{ $sells->status }}</td>
</tr>
@endforeach
最佳答案
您需要一种不同的方法。从数据库中获取所有出售和物品,然后将它们分组:
$buyLists = Sell::join('items', 'sells.item_id', '=', 'items.item_id')
->select('sells.*', 'items.item_title')
->whereDate('sells.created_at', $timeCheck)
->get();
$groupedBuyLists = $buyLists->groupBy('ticket_number');
foreach($groupedBuyLists as $ticketNumber => $sells) {
$title = implode(', ', $sells->pluck('item_title')->all());
foreach($sells as $sell) {
// $sell->status
}
}
对于
items
,应使用relationship和eager loading而不是JOIN
。