Laravel Relationships无法访问

时间:2015-07-23 07:29:17

标签: php laravel eloquent relationships

我有3个型号:用户,A,B和C.

user.php的

public function a()
{
    return $this->belongsTo('App\A');
}

a.php只会

public function b(){
    return $this->belongsTo('App\B');
}

B.php

public function cRelation(){
    return $this->hasOne('App\C');
}

然后,我执行我的查询并加载关系

$tests = User::all();
$tests->load('a.b.cRelation');

现在,在我的视图文件中,如果我打印出来:

@foreach($tests as $test)
    {{$test->a->b}}
@endforeach

我可以按预期看到我的c_relation魔术属性。 但如果我尝试访问它,则不会打印任何内容。

我哪里错了?为什么我打印父对象($test->a->b),我可以看到该属性,但我无法打印它?

1 个答案:

答案 0 :(得分:2)

这里发生了什么......

当您使用{{ $test->a->b }}在模板中打印模型时,模型将转换为JSON以使输出更具可读性。
将模型转换为JSON时,Eloquent默认情况下会将关系名称从 camelCase 更改为 snake_case

但是,当您从模型访问关系时,始终使用方法名称,因此在这种情况下{{ $test->a->b->cRelation }}