Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 我能';I don’我不能建立一些有说服力的关系_Laravel_Database Design_Model_Eloquent_Database Relations - Fatal编程技术网

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;
    }
}