Таким образом, красноречивый способ для этого запроса может быть выполнен с использованием методов groupBy
и havingRaw
. Сначала мы выбираем столбцы, которые нам нужно объединить
OrderPayment::select('user_id', \DB::raw('COUNT(user_id) as payment_made))
* 1008. *
затем мы сгруппируем нужный нам атрибут - groupBy('user_id')
, обратите внимание, что свойство, по которому мы группируем, должно быть в операторе select, или это не сработает.
Теперь последнее предложение, где мы видим, есть ли несколько строк имеют одинаковые user_id
, мы используем> havingRaw('COUNT(user_id) > ?', [1])
Теперь общий красноречивый запрос выглядит следующим образом
OrderPayment::select('user_id', \DB::raw('COUNT(user_id) as payment_made))
->groupBy('user_id')
->havingRaw('COUNT(user_id) > ?', [1])
->get();
Обратите внимание, что в предложении select мы передаем DB Необработанный оператор, который передается в виде строки в построитель запросов, и поэтому следует соблюдать осторожность с SQL инъекциями.