【发布时间】:2021-02-10 13:08:16
【问题描述】:
我有这样的表:
categorizables
我还有表 products 和 categories 没有任何外键。
我尝试创建这样的查询来计算每个类别的产品:
SELECT category_id, COUNT(categorizable_id), categories.title
FROM categorizables
LEFT JOIN categories ON categories.id = category_id
GROUP BY category_id
它有效,但是当我尝试添加 WHERE 条件时,它不起作用:
SELECT category_id, COUNT(categorizable_id), categories.title
FROM categorizables
LEFT JOIN categories ON categories.id = category_id
WHERE categorizables.categorizable_type = "App\Models\Product"
GROUP BY category_id
如何正确添加WHERE 条件?
【问题讨论】:
-
我只是迷路了。您有一个表
categorizable,它同时具有id和categorizable_id。那是什么样的命名约定?任何地方都有product_id吗?表是如何连接的? -
@GordonLinoff 那是一种变形关系......它使用 _type 作为模型,使用 _id 作为 id
-
定义“不起作用”。别名所有表,完全限定您的选择列表并完全指定您的组(并打开您的 MySQL ONLY_FULL_GROUP_BY 模式)
-
可以添加你的select语句的代码吗?
-
这种来自 Laravel 框架的命名约定
morphMany表结构 :) @GordonLinoff
标签: mysql sql laravel eloquent