本文介绍了有条件的热切加载-Laravel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个查询:

 $tournament = Tournament::with(
            'championships',
            'championships.settings',
            'championships.category',
            'championships.tree.users',
        )->first();

现在,它给了我所有附加冠军的比赛。

Right now, it gives me the tournament with all attached championships.

我需要得到的是锦标赛,但只有与我拥有的$ request-> championshipId相匹配的锦标赛。

What I need is to get the tournament but only with the championship which match the $request->championshipId that I have.

当然,我还希望在所有其他关系( championships.settings, championships.category, championships.tree.users)中使用此过滤器。
知道吗?

Off course, I also want this filter in all the other relations ('championships.settings', 'championships.category','championships.tree.users')Any idea?

推荐答案

您可以使用像这样:

You can use Constraining Eager Loading like this:

$tournaments = Tournament::with(['championships' => function ($query) {
    $query->where('something', 'like', '%this%');
},
'championships.settings' => function ($query) {
    $query->where('something', 'like', '%this%');
},
...])->get();

希望这会有所帮助!

这篇关于有条件的热切加载-Laravel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-10 00:37