Php Laravel 5.2:从其他关系方法访问关系方法
我试图从实体模型的其他关系访问laravel关系中的关系,但我得到了错误的回报Php Laravel 5.2:从其他关系方法访问关系方法,php,laravel,laravel-5.2,laravel-eloquent,Php,Laravel,Laravel 5.2,Laravel Eloquent,我试图从实体模型的其他关系访问laravel关系中的关系,但我得到了错误的回报 class Entity{ public function company() { return $this->hasOne('App\Models\Company' , 'company_code' , 'company_code' ); } public function branch(){ $company = $this->company; // wrong return
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;
}
当我试图通过我的
branch()
方法访问公司模型时,$this->company
正在返回公司模型的第一项,而不是它的关系。是否有方法使用正确的值访问其他关系方法中的company()
方法?我可以通过我的访问器方法访问它,所以我希望也能访问它。我认为,当应用程序开始定义表之间的关系时,laravel调用了Relationship方法,在这段时间内,$this
未引用任何内容,我建议您将分支机构
关系移动到公司
模型:
class Company{
public function branch() {
return $this->hasOne('App\Models\Branch' , 'company_code' , 'company_code' );
}
}
现在,您可以使用以下方法从实体
获取分支
:
$this->company()->branch
请尝试按以下方式设置条件-
public function branch(){
$companyId = $this->company->company_id;
return $this->hasOne('App\Models\Branch' , 'company_code' , 'company_code' )
->where( 'company_id', '=', $companyId );
}
我已经试过了。由于当我在
branch()
方法上访问数据库时,$this->company
从数据库返回第一行,因此它给了我一组错误的数据。所以company_id返回1而不是52。我很感激这个建议。但是公司模型上有branchs()
方法。我不能用hasOne()
创建branch()
,因为公司下有许多分支。这次我无法调整关系。但是,如果没有办法。我想我必须制作一个查询生成器来实现这一点。