我试图通过查询名为 company_projects 的链接表来获取“相关”链接模型,该链接表包含(如您所料)公司和项目的 id(项目是一种产品类别)。
在这种情况下,用于确定相关项目的流程是:
- 获取与您在同一项目(“产品类别”)中的公司
- 查找与这些公司相关联的其他项目 ID
- 获取上一步获取的链接项目的信息
我正在尝试做的已经在以下原始查询中起作用:
SELECT
*
FROM
projects
WHERE
projects.id IN
(
SELECT cp1.project_id
FROM company_projects cp1
WHERE cp1.company_id IN
(
SELECT cp1.company_id
FROM projects p
LEFT JOIN company_projects cp2 ON cp2.project_id = p.id
WHERE p.id = X AND cp2.company_id != Y
)
)
AND projects.id != X
X = 当前项目的 ID(“产品类别”)
Y = 当前“用户”(公司)的 ID
但我真正的问题是,如何在 Laravel Eloquent(当前为 v4.2)中优雅地做到这一点。我试过了,但到目前为止我没有运气......
更新:
我应该注意,我确实有通过多个项目使用 Eloquent 和 Models 的经验,但由于某种原因,我在这个特定的查询中失败了。所以希望看到一个解释的解决方案。我可能以错误的方式思考并且答案相对容易。