我无法建立一些 Eloquent 关系

I can't make some Eloquent relations to work

我先说明一下我的table的关系,然后再说明我不能做什么。

所以,我有一个名为 "Company" 的实体,它有很多 "Incomes",有很多 "IncomeUnitSale",有一个 "IncomeUnitSaleUnitPrice"

Company 1->* Income 1->* IncomeUnitSale 1->1 IncomeUnitSaleUnitPrice

型号:

公司模式

public function Income(){
    return $this->hasMany('App\Income');
}

收入模型(table 有 "company_id")

public function Company(){
    return $this->belongsTo('App\Company');
}

public function IncomeUnitSale(){
    return $this->hasMany('App\IncomeUnitSale');
}

IncomeUnitSale 模型(table 有 "income_id")

public function Income(){
    return $this->belongsTo('App\Income');
}

public function IncomeUnitSaleUnitPrice(){
    return $this->hasOne('App\IncomeUnitSaleUnitPrice');
}

IncomeUnitSaleUnitPrice(table 有 "income_unit_sale_id")

public function IncomeUnitSale(){
    return $this->belongsTo('App\IncomeUnitSale');
}

我想做的是:

$company = Company::where("id","=",1)->first();
$company->Income->IncomeUnitSale->IncomeUnitSaleUnitPrice

但它说它是空的,它一直有效到 $company->Income->IncomeUnitSale 但在那之后没有显示任何关系。

有人可以告诉我我做错了什么吗?

谢谢!

hasMany 关系总是 return 一个 Eloquent Collection 对象。如果没有相关记录,它只是一个空CollectionhasOnebelongsTo 关系将始终 return 相关模型,或者 null 如果没有相关模型。

因为您的一些关系是 hasMany,您必须迭代 returned Collection 才能走得更远。因此,您必须:

而不是 $company->Income->IncomeUnitSale->IncomeUnitSaleUnitPrice
foreach($company->Income as $income) {
    foreach($income->IncomeUnitSale as $sale) {
        echo $sale->IncomeUnitSaleUnitPrice->price;
    }
}