Eloquent 排序依据和分组依据
Eloquent Order By and Group By
我已经搜索了 2 个小时,了解如何使用 groupBy 和 orderBY 通过 eloquent 构建查询。
这是我的情况:我有一个 table 订单包含这些列:
idOfOrder, quantityOfProduct, userWhoBuy, productBuy, statusOfOrder
我想获得销量最高的 3 个产品。为此,我需要构建一个查询,该查询对来自 ProductBy 的所有数据进行分组,根据数量对主题求和,并按 desc 对主题进行排序。但这太难了。
这是我的实际查询:
$buyObj->select('product',DB::raw('count(*) as total'))
->where('status','=','1')
->groupBy('product')
->orderBy('quantity','desc')
->take(3)
->get();
我收到这个错误:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'web_projet_exia.buys.quantity' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select product
, count(*) as total from buys
where status
= 1 group by product
order by quantity
desc limit 3) "
你知道怎么解决吗?
提前致谢!
解决办法就是只按总数订购,而不是按数量订购。感谢@JonasStaudenmeir
我已经搜索了 2 个小时,了解如何使用 groupBy 和 orderBY 通过 eloquent 构建查询。
这是我的情况:我有一个 table 订单包含这些列:
idOfOrder, quantityOfProduct, userWhoBuy, productBuy, statusOfOrder
我想获得销量最高的 3 个产品。为此,我需要构建一个查询,该查询对来自 ProductBy 的所有数据进行分组,根据数量对主题求和,并按 desc 对主题进行排序。但这太难了。
这是我的实际查询:
$buyObj->select('product',DB::raw('count(*) as total'))
->where('status','=','1')
->groupBy('product')
->orderBy('quantity','desc')
->take(3)
->get();
我收到这个错误:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'web_projet_exia.buys.quantity' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select
product
, count(*) as total frombuys
wherestatus
= 1 group byproduct
order byquantity
desc limit 3) "
你知道怎么解决吗?
提前致谢!
解决办法就是只按总数订购,而不是按数量订购。感谢@JonasStaudenmeir