#laravel #eloquent
#laravel #красноречивый
Вопрос:
Я хочу сгруппировать товар на основе ЗАКАЗА NO, где продажи, сделанные пользователем входа в систему
$sales = KotOrder::orderBy('id','DESC')
->where('prepared_by', Auth::user()->id)
->get();
return view('settups.restaurant.pos.report', compact('sales'));
И я попробовал это
$sales = KotOrder::orderBy('id','DESC')
->groupBy('qrtxt')
->where('prepared_by', Auth::user()->id)
->get();
return view('settups.restaurant.pos.report', compact('sales'));
Выдает ошибку
Комментарии:
1. $sales = KotOrder::where(‘prepared_by’, Auth::user()->id) ->OrderBy(‘id’, ‘DESC’) ->distinct(‘qrtxt’) ->get(); return view(‘настройки.ресторан.pos.отчет’, compact(‘sales’)); Попробуйте заменить groupBy на distinct ?
2. Я заменил groupBy на distinct, он по-прежнему отображает все элементы
3. Можно ли заменить идентификатор orderby desc на latest() вместо этого? Посмотрите, изменится ли результат.
4. Похоже, что есть несколько элементов с одинаковым порядком no (строка 1, 3, 7). Я предполагаю, что у каждого из них будет свой идентификатор. Когда вы группируете с помощью order no , он становится одной группой и
id
больше не является допустимым идентификатором этой группы. То же самое верно и для других столбцов, если вы не применяете агрегатную функцию (например: сумма (цена))5. Итак, вместо
select *
того, чтобы указывать нужные столбцы. Укажитеselect
список в своем запросе. Например:groupB(.)->where(..)->select(DB::raw('SUM(price) as total_price'))->get()