eloquent - Laravel Eloquent 中的预加载嵌套关系

标签 eloquent laravel-5.4 eager-loading

我有六个模型:部门、地区、区域、分支机构、管理系统和政策。一个部门有多个地区,一个地区有多个地区,一个地区有多个分支机构,一个分支机构有多个部门,一个部门有一项政策,一项政策属于一个部门。我想立即加载一个策略及其管理信息系统、分支机构、地区、区域和部门。当我尝试这样做时,策略会加载错误和分支,但其他关系不会加载。这是我的模型:

部门:

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);
}

错误:

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);
}

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

最佳答案

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

关于eloquent - Laravel Eloquent 中的预加载嵌套关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43752848/

相关文章:

laravel-5.4 - Laravel 5.4 使用 browserSync 观看 Blade 文件

php - Laravel 5.4 内部错误 : Failed to retrieve the default value

c# - Entity Framework DbContext 如何将记录加载到内存中

PHP 在 Eloquent 模型中运行原始 SQL 查询

mysql - Laravel:根据另一个表中的其他数据选择数据

php - 拉维尔 5 : Replace string in query results (Eloquent ORM)

php - Laravel Heroku 应用程序错误

asp.net-mvc - 延迟加载忽略显式加载

ruby-on-rails - 动态加载 STI 类

php - 将记录附加到 Laravel hasManyThrough 关系