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 }}