我正在使用Laravel 5.6中的Eloquent来解决以下问题。
我需要返回分配了tag_id
5
个问题的所有问题,其中问题表中的project_id
和item_id
与{{1}匹配和我的数据透视表中的project_id
。
问题表:
issues_tags数据透视表:
我已尝试过以下代码,但它会从问题表中返回所有问题,但预期结果为3。
预期结果
issue_id
表返回的结果应为ID 1,4和5。
issues
答案 0 :(得分:1)
您需要在联接中指定问题表而不是issues_tags。左连接也有助于减少结果。由于您要加入两个不同的键,因此必须使用闭包。
$issues = Issue::leftJoin('issues_tags', function($join) {
$join->on('issues.project_id', '=', 'issues_tags.project_id');
$join->on('issues.item_id', '=', 'issues_tags.issue_id');
})
->where('issues_tags.tag_id', 5)->select('issues.*')->get();
如果表格确实与project_id-> project_id和issues.id - >匹配issues_tags.issues_id,您可以修改第二个连接子句。