首先让我解释一下我的表格之间的关系,然后我将解释我不能做的事情。
所以,我有一个名为“公司”的实体,它有许多“收入”,其中有很多“IncomeUnitSale”,其中有一个“IncomeUnitSaleUnitPrice”
Company 1->* Income 1->* IncomeUnitSale 1->1 IncomeUnitSaleUnitPrice
型号:
公司模式
public function Income(){
return $this->hasMany('App\Income');
}
收入模型(表格有“company_id”)
public function Company(){
return $this->belongsTo('App\Company');
}
public function IncomeUnitSale(){
return $this->hasMany('App\IncomeUnitSale');
}
IncomeUnitSale模型(表格有“income_id”)
public function Income(){
return $this->belongsTo('App\Income');
}
public function IncomeUnitSaleUnitPrice(){
return $this->hasOne('App\IncomeUnitSaleUnitPrice');
}
IncomeUnitSaleUnitPrice(表格有“income_unit_sale_id”)
public function IncomeUnitSale(){
return $this->belongsTo('App\IncomeUnitSale');
}
我要做的是以下内容:
$company = Company::where("id","=",1)->first();
$company->Income->IncomeUnitSale->IncomeUnitSaleUnitPrice
但是它说它为null,它一直工作到$company->Income->IncomeUnitSale
,但之后不会显示任何关系。
有人可以告诉我我做错了吗?
谢谢!
答案 0 :(得分:0)
hasMany
关系将始终返回一个Eloquent Collection
对象。如果没有相关记录,它将只是一个空Collection
。 hasOne
和belongsTo
关系将始终返回相关模型,如果没有相关模型,则返回null
。
由于您的某些关系是hasMany
,因此您必须迭代返回的Collection
以便能够更进一步。因此,您必须:{/ p>而不是$company->Income->IncomeUnitSale->IncomeUnitSaleUnitPrice
foreach($company->Income as $income) {
foreach($income->IncomeUnitSale as $sale) {
echo $sale->IncomeUnitSaleUnitPrice->price;
}
}