错误代码 :

SQLSTATE [42000]:语法错误或访问冲突:1055'schoolstore_laravel.sells.xid'不在GROUP BY中(SQL:选择sells。*,itemsitem_titleitemsitem_id ,group_concat(items.item_title SEPARATOR“,”)来自sells上的items内部联接sellsitem_id = itemsitem_id其中sellscreated_at类似于2018-04-14按sellsticket_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,应使用relationshipeager loading而不是JOIN

09-26 02:42