Eloquent查询搜索两个表

时间:2018-06-01 13:13:46

标签: php mysql laravel eloquent

我正在使用Laravel 5.6中的Eloquent来解决以下问题。

我需要返回分配了tag_id 5个问题的所有问题,其中问题表中的project_iditem_id与{{1}匹配和我的数据透视表中的project_id

问题表:

enter image description here

issues_tags数据透视表:

enter image description here

我已尝试过以下代码,但它会从问题表中返回所有问题,但预期结果为3。

预期结果

issue_id表返回的结果应为ID 1,4和5。

issues

1 个答案:

答案 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,您可以修改第二个连接子句。