我无法建立一些 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
对象。如果没有相关记录,它只是一个空Collection
。 hasOne
和 belongsTo
关系将始终 return 相关模型,或者 null
如果没有相关模型。
因为您的一些关系是 hasMany
,您必须迭代 returned Collection
才能走得更远。因此,您必须:
而不是 $company->Income->IncomeUnitSale->IncomeUnitSaleUnitPrice
foreach($company->Income as $income) {
foreach($income->IncomeUnitSale as $sale) {
echo $sale->IncomeUnitSaleUnitPrice->price;
}
}
我先说明一下我的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
对象。如果没有相关记录,它只是一个空Collection
。 hasOne
和 belongsTo
关系将始终 return 相关模型,或者 null
如果没有相关模型。
因为您的一些关系是 hasMany
,您必须迭代 returned Collection
才能走得更远。因此,您必须:
$company->Income->IncomeUnitSale->IncomeUnitSaleUnitPrice
foreach($company->Income as $income) {
foreach($income->IncomeUnitSale as $sale) {
echo $sale->IncomeUnitSaleUnitPrice->price;
}
}