Laravel雄辩地获得了所有的“ with”关系,而没有一一指定

时间:2018-08-14 05:38:00

标签: laravel eloquent relationship

我的关系是这样的:

player
   sub
       something
   sub-2
   sub-3
       something
           foobar
   sub-4

我可以通过其子ID通过ID获得玩家:

Player::with('sub.something','sub-2','sub-3.something.foobar','sub-4')->find($id);

但是,我必须手动指定每个“ with”关系。 是否可以在一个查询中获得子关系(hasMany / hasOne)上的所有内容? 像这样:

Player::with(everything())->find($id);

3 个答案:

答案 0 :(得分:1)

简短的回答是“否”,建立关系的成本很高,因此您需要明确说明每次加载的内容。但是,您可以指定始终渴望在模型上加载哪些关系:

class Player extends Model {
    protected $with = [ 'sub.something','sub-2','sub-3.something.foobar','sub-4' ];
    // Rest of model
}

这样,您不必在每次加载模型时都指定::with

答案 1 :(得分:0)

是的,您可以使用“急切加载”来获取具有相关数据的模型: eager-loading

答案 2 :(得分:0)

尝试一下:

Player::with(['sub'])->find($id);

它将返回玩家的所有潜艇。