我有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
),我可以看到该属性,但我无法打印它?
答案 0 :(得分:2)
这里发生了什么......
当您使用{{ $test->a->b }}
在模板中打印模型时,模型将转换为JSON以使输出更具可读性。
将模型转换为JSON时,Eloquent默认情况下会将关系名称从 camelCase 更改为 snake_case 。
但是,当您从模型访问关系时,始终使用方法名称,因此在这种情况下{{ $test->a->b->cRelation }}