我正试图从我的实体模型的其他关系中获取laravel关系中的关系,但我收到了错误的回复。
class Entity{
public function company()
{
return $this->hasOne('App\Models\Company' , 'company_code' , 'company_code' );
}
public function branch(){
$company = $this->company; // wrong return
return $this->hasOne('App\Models\Branch' , 'company_code' , 'company_code' )
->where( 'company_id' , $company->company_id );
}
public function getTestAttribute(){
$company = $this->company // correct return
return $company->company_id;
}
当我尝试在$this->company
方法上访问时,branch()
返回公司模型的第一项而不是其关系。有没有办法在其他关系方法中使用正确的值访问company()
方法?我可以在我的Accessor方法上访问它,所以我也希望能够访问它。
答案 0 :(得分:1)
我认为当应用程序开始定义表之间的关系时,laravel调用关系派生方法,在此期间selectedUsers
没有引用任何内容,我建议你将$this
关系移到branch
模型:
Company
现在,您可以使用以下内容从class Company{
public function branch() {
return $this->hasOne('App\Models\Branch' , 'company_code' , 'company_code' );
}
}
获取branch
Entity
答案 1 :(得分:0)
尝试以下列方式设置条件 -
public function branch(){
$companyId = $this->company->company_id;
return $this->hasOne('App\Models\Branch' , 'company_code' , 'company_code' )
->where( 'company_id', '=', $companyId );
}