Laravel 5.2:从其他关系方法访问关系方法

时间:2018-01-19 11:07:25

标签: 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
    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方法上访问它,所以我也希望能够访问它。

2 个答案:

答案 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 );
}