php - 如何加载多级关系?

标签 php laravel relationship

我正在尝试在 3 个相关表中搜索如下 contracts belongsTo -> company hasMany -> company_addresses。我想在契约(Contract) View 中显示 company_addresses 数据。

contracts
    id – integer
    company_id - integer
    title – string 

companies
    id - integer
    name – string

company_addresses
    id - integer
    company_id - integer
    address – string
    complement – string
    contact– string

契约(Contract)范本

public function company()
{
    return $this->belongsTo(Company::class, 'company_id', 'id');
}

模型公司

public function contracts ()
{
    return $this->hasMany(Contract::class);
} 
public function addresses()
{
    return $this->hasMany(CompanyAddress::class);
}

模型公司地址

public function company()
{
    return $this->belongsTo(Company::class);
}

代码合约 Controller

 public function index()
 {
     $contract= Contract::with('companies.company_addresses')->get();
     return view(‘contract.view')->with(compact('contract'));
 }

那么我做错了什么,我该如何解决呢?任何帮助都是非常有效的。

最佳答案

你生错 child 了。改变这个:

$contract= Contract::with('companies.company_addresses')->get();

对此

$contract= Contract::with('company.addresses')->get();

关于php - 如何加载多级关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49941226/

相关文章:

php - 无法在 laravel 5.8 中安装集合

database - 在 Laravel Voyager 中创建表时创建迁移文件

laravel - 从生产服务器上的存储库中提取更改后,Laravel 上的 Vue 文件不会反射(reflect)更改

ios - ios核心数据关系查询

java - JPA:外部 ID 不会自动设置

php - 获取表中包含用户 ID 的行

javascript - MIT APP Inventor 打开时出错。如何解决?

sql - ER 关系数据库编码包含弱实体

php - preg_replace 在省略时插入默认值

php - 如何在第一次登录时随机获取记录?