Laravel5:SQLSTATE [42000]:语法错误或访问冲突:1055

时间:2018-04-14 14:00:34

标签: mysql laravel eloquent

错误代码:

SQLSTATE [42000]:语法错误或访问冲突:1055'churchstore_laravel.sells.xid'不在GROUP BY中(SQL:选择sells。*,items。{{1} } {,item_titleitems,group_concat(items.item_title SEPARATOR“,”)来自item_id上的sells内部加入itemssells = item_iditems其中item_idsells喜欢2018-04-14%created_at组。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();

1 个答案:

答案 0 :(得分:0)

您需要一种不同的方法。获取数据库中的所有商品和商品,然后将其分组:

$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