我的关系是这样的:
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);
答案 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);
它将返回玩家的所有潜艇。