Laravel 我能';I don’我不能建立一些有说服力的关系
让我先解释一下我的表之间的关系,然后再解释我不能做的事情 所以,我有一个叫做“公司”的实体,它有很多“收入”,有很多“收入单位销售”,有一个“收入单位销售单价” 型号: 公司模式Laravel 我能';I don’我不能建立一些有说服力的关系,laravel,database-design,model,eloquent,database-relations,Laravel,Database Design,Model,Eloquent,Database Relations,让我先解释一下我的表之间的关系,然后再解释我不能做的事情 所以,我有一个叫做“公司”的实体,它有很多“收入”,有很多“收入单位销售”,有一个“收入单位销售单价” 型号: 公司模式 public function Income(){ return $this->hasMany('App\Income'); } 收入模型(表中有“公司id”) IncomeUnitSale模型(表中有“收入id”) IncomeUnitSaleUnitPrice(表中有“收入\单位\销售\ id”)
public function Income(){
return $this->hasMany('App\Income');
}
收入模型(表中有“公司id”)
IncomeUnitSale模型(表中有“收入id”)
IncomeUnitSaleUnitPrice(表中有“收入\单位\销售\ id”)
我想做的是:
$company = Company::where("id","=",1)->first();
$company->Income->IncomeUnitSale->IncomeUnitSaleUnitPrice
但是它说它为空,它一直工作到$company->Income->IncomeUnitSale
,但在那之后就没有任何关系了
谁能告诉我我做错了什么
谢谢大家!
有许多
关系将始终返回一个雄辩的集合
对象。如果没有相关记录,它将只是一个空的集合
hasOne
和belongsTo
关系将始终返回相关模型,如果没有相关模型,则返回null
因为您的一些关系是有很多
,所以您必须迭代返回的集合
,以便能够继续。因此,您必须:
foreach($company->Income as $income) {
foreach($income->IncomeUnitSale as $sale) {
echo $sale->IncomeUnitSaleUnitPrice->price;
}
}
非常感谢。老实说,最好是
$company->IncomeUnitSale->IncomeUnitSale->IncomeUnitSaleUnitPrice
。但这也很有效,谢谢你@mkmnstr如果您的公司有多个收入,并且每个收入有多个销售单价,您希望$company->income->IncomeUnitSale->IncomeUnitSaleUnitPrice
返回哪个记录?完全正确。我不知道我在想什么xD谢谢!
public function Income(){
return $this->belongsTo('App\Income');
}
public function IncomeUnitSaleUnitPrice(){
return $this->hasOne('App\IncomeUnitSaleUnitPrice');
}
public function IncomeUnitSale(){
return $this->belongsTo('App\IncomeUnitSale');
}
$company = Company::where("id","=",1)->first();
$company->Income->IncomeUnitSale->IncomeUnitSaleUnitPrice
foreach($company->Income as $income) {
foreach($income->IncomeUnitSale as $sale) {
echo $sale->IncomeUnitSaleUnitPrice->price;
}
}