在视图中访问预先加载的对象 laravel 5.7

Accessing eager-loaded objects in view laravel 5.7

我有几个模型链接到一个模型调用 我定义了所有关系,它们工作得很好,但我对急切加载的结果有疑问。

我有这个查询:

    $callDetails =\App\Call::with(['client','subissues','subissues.issue','partner','district'])
                      ->where('call.id', '=', $id)
                      ->get();

在 tinker 返回时效果很好

{"id":17400,
"client":{"id":18317,"name":"Yad  Kal","phonenumber":"0991234567","age":27,"gender":"Male"},
"district":{"id":1,"name":"Dedza"},
"comments":" He complained ",
"completeness":"complete",
"perpetrator":1,
"partner_id":119,"status":1,
"subissues":[{"id":1378,"name":"Issues of Dissatifaction","description":"Issues of Dissatifaction","issue":{"id":6,"name":"Emergency Response (World)","description":"Emergency response"},"pivot":{"call":17400,"subissue":1378}}],"partner":{"id":119,"name":"World"}} 

但是当尝试使用 $callDetails->client 访问客户端时,它 returns 只有客户端 ID。 $callDetails->client->name returns 一个错误。

我不知道哪里做错了,但所有急切加载的结果都让我头疼!

确保您的 table 列中没有名称 client,或者您的模型中没有名称 client 的任何 属性。当 relationship 和 field/property 具有完全相同的名称(在您的情况下为 client)可能会导致问题,因此在这种情况下您应该重命名 relationship 或 field/property