使用“with”加入 laravel 并在连接表中设置 where 语句

Posted

技术标签:

【中文标题】使用“with”加入 laravel 并在连接表中设置 where 语句【英文标题】:join in laravel using "with" & set where statement in joined table 【发布时间】:2019-01-13 12:28:31 【问题描述】:

我的代码是这样写的:

    $teams = TeamTeam::query()
        ->selectRaw('team_teams.title, team_teams.team_structure_id, team_teams.id,
         team_teams.description')
        ->join('team_structures','team_teams.team_structure_id',"=",'team_structures.id')
        ->where('team_structures.organization_id',session()->get('organization_id'))
        ->orderBy('team_structures.created_at','desc');
    $teams = $teams->get();

我想使用 from with 而不是 join like :

TeamTeam::with('TeamStructure')... 并在 team_structures 表中设置 where 语句。我怎么能用它??!!

谢谢。

【问题讨论】:

我认为我们需要更多的信息。也许是您当前的结果和预期的结果。 我想像 with('TeamStructure') 一样使用“with”加入并设置 where 语句;我目前的结果是正确的。我想知道如何使用该语句编写代码! 【参考方案1】:
$teams = TeamTeam::with(['TeamStructure' => function ($q1)
            $q1->where('organization_id', session()->get('organization_id'))->orderBy('created_at', 'desc');
        ])
        ->whereHas('TeamStructure', function ($q2)
            $q2->where('organization_id', session()->get('organization_id'))->orderBy('created_at', 'desc');
        )
        ->select('title', 'team_structure_id', 'id', 'description')
        ->get();

【讨论】:

以上是关于使用“with”加入 laravel 并在连接表中设置 where 语句的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel Eloquent 中使用“with()”函数连接列

连接表时 Laravel 4 SQL 错误

Laravel orm with() 不起作用

PHP,Laravel 连接两个查询的结果,并有选择地显示在 html/blade 表中

Laravel:嵌套查询连接导致子数组

如何从不同的表中获取 customer_id 并在 laravel 中使用正确的方法避免重复?