【问题标题】:group by child entity in laravel 5 with eloquent在laravel 5中按子实体分组,雄辩
【发布时间】: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


【解决方案1】:

更新:Moein 向我发送了正确的方向,我可以通过这样做来解决它:

Model::join('products', 'models.id', '=', 'products.model_id')
            ->selectRaw('products.*, count(*)')
            ->groupBy('products.color')
            ->groupBy('products.modelo_id')
            -> get();

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 2015-08-26
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    相关资源
    最近更新 更多