渴望加载条件 - Laravel

Jul*_*oro 6 laravel eloquent

我有这个问题:

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

现在,它给了我所有附加锦标赛的锦标赛.

我需要的是参加锦标赛,但只有我所拥有的$ request-> ChampionshipId锦标赛.

当然,我也想在所有其他关系中使用这个过滤器('championships.settings','championships.category','championships.tree.users')任何想法?

Sau*_*ogi 15

你可以Constraining Eager Loading像这样使用:

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

希望这可以帮助!


Eri*_*ker 9

加载子查询约束中的关系:

$tournament = Tournament::with(['championships' => function($query) use ($request) {
    return $query->where('id', $request->championshipId)
        ->with([
            'settings',
            'category',
            'tree.users'
        ]);
}])->first();
Run Code Online (Sandbox Code Playgroud)