Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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
Php Laravel 5.2:从其他关系方法访问关系方法_Php_Laravel_Laravel 5.2_Laravel Eloquent - Fatal编程技术网

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

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

我试图从实体模型的其他关系访问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;
}

当我试图通过我的
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()
,因为公司
下有许多分支。这次我无法调整关系。但是,如果没有办法。我想我必须制作一个查询生成器来实现这一点。