Laravel 关系无法访问
Laravel Relationships can't access
我有 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
),我可以看到 属性 但我不能打印它?
这是正在发生的事情...
当您使用 {{ $test->a->b }}
在模板中打印模型时,模型将转换为 JSON 以使输出更具可读性。
将模型转换为 JSON 时,Eloquent 默认会将关系名称从 camelCase 更改为 snake_case .
然而,当您从模型访问关系时,您总是使用 方法名称 ,所以在那种情况下 {{ $test->a->b->cRelation }}
我有 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
),我可以看到 属性 但我不能打印它?
这是正在发生的事情...
当您使用 {{ $test->a->b }}
在模板中打印模型时,模型将转换为 JSON 以使输出更具可读性。
将模型转换为 JSON 时,Eloquent 默认会将关系名称从 camelCase 更改为 snake_case .
然而,当您从模型访问关系时,您总是使用 方法名称 ,所以在那种情况下 {{ $test->a->b->cRelation }}