渴望在Laravel Eloquent中加载嵌套关系

时间:2017-05-03 06:40:48

标签: eloquent laravel-5.4 eager-loading

我有六种模式:分区,区域,区域,分支,错误和政策。一个区域有很多区域,一个区域有很多区域,一个区域有许多分支,一个分支有许多mises,一个错误有一个策略,一个策略属于一个错误。我想急切地加载一个带有错误,分支,区域,区域和分区的策略。当我尝试这样做时,策略加载了mis和branch,但是其他关系没有被加载。这是我的模特:

司:

public function regions () {
    return $this->hasMany(Region::class);
}
public function areas () {
    return $this->hasManyThrough(Area::class, Region::class);
}

区:

public function division () {
    return $this->belongsTo(Division::class);
}
public function areas () {
    return $this->hasMany(Area::class);
}
public function branches () {
    return $this->hasManyThrough(Branch::class, Area::class);
}

区域:

public function region () {
    return $this->belongsTo(Region::class);
}
public function branches () {
    return $this->hasMany(Branch::class);
}

科:

public function area () {
    return $this->belongsTo(Area::class);
}
public function mises () {
    return $this->hasMany(Mis::class);
}

M是:

public function policy () {
    return $this->hasOne(Policy::class);
}
public function branch () {
    return $this->belongsTo(Branch::class);
}

策略:

public function mis () {
    return $this->belongsTo(Mis::class);
}

这就是我试图进行急切加载的方式:

public function showPolicyReport () {
    $policies = Policy::with('mis.branch.area.region.division')->get();
    dd($policies);
}

如果有人能帮我找到解决方案,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

没关系。实际上,关系是正确加载的。它是dd()方法,没有显示所有嵌套关系。