会社とプロジェクトの ID を保持する company_projects という名前のリンク テーブルにクエリを実行して、「関連する」リンク モデルを取得しようとしています (プロジェクトは一種の製品カテゴリです)。
この場合、関連プロジェクトを決定するために使用されるフローは次のとおりです。
- あなたと同じプロジェクト(「製品カテゴリ」)にある会社を取得します。
- それらの会社にリンクされている他のプロジェクト 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 とモデルを使用した経験があることに注意してください。ただし、何らかの理由で、この特定のクエリで失敗します。だから、説明された解決策を見たいと思っていました。私の考えが間違っている可能性があり、答えは比較的簡単です。