dongzi5673 2018-06-01 13:13
浏览 105
已采纳

Eloquent查询搜索两个表

I am struggling with the following query, using Eloquent in Laravel 5.6.

I need to return all issues that have a tag_id of 5 assigned to them, where the project_id and item_id from the issues table matches the project_id and issue_id from my pivot table.

issues table:

enter image description here

issues_tags pivot table:

enter image description here

I have tried the following code, but it returns all issues from the issue table, however the expectation is 3 results.

Expected results

The results returned from the issues table should be ID 1, 4 and 5.

$issues = Issue::join('issues_tags', 'issues_tags.project_id', 'issues_tags.issue_id')->where('issues_tags.tag_id', 5)->select('issues.*')->get();
  • 写回答

1条回答 默认 最新

  • doujiene2845 2018-06-01 13:46
    关注

    You need to specify the issues table instead of issues_tags on the join. A left join will also help reduce the results. Since you're joining on two different keys, you have to use a closure.

    $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();
    

    If the table is really supposed to match on project_id->project_id and issues.id -> issues_tags.issues_id, you can modify the 2nd join clause.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路