【发布时间】:2016-09-12 23:27:55
【问题描述】:
我有这张表(简化版):
products:
id,
model_id,
color
models:
id,
name
我想知道每种型号和每种颜色有多少产品,在sql中我可以这样做:
SELECT models.name, count(*)
FROM models
INNER JOIN products ON (models.id = products.model_id)
group by products.color, products.model_id
但我不能用 eloquent 做,这是我的代码:
Model::with('products','products.model')->groupBy('products.color')->groupBy('products.model')->get();
抛出此错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'products.color' in 'group statement'
这就像 eloquent 不知道与产品的关系模型,我缺少什么?
更新:Moein 向我发送了正确的方向,我可以通过这样做来解决它:
Model::join('products', 'models.id', '=', 'products.model_id')
->selectRaw('products.*, count(*)')
->groupBy('products.color')
->groupBy('products.modelo_id')
-> get();
【问题讨论】:
-
你必须先加入,把“with”换成“join”就完成了(
join('products', 'id', '=', 'product_id')) -
它快为我工作了,我认为它返回了正确的产品,但我如何添加计数列以了解我有多少产品的型号和颜色?
标签: php sql laravel-5 eloquent