Laravel Resource whenLoaded不适用于hasOne和belongsTo关系

时间:2019-02-18 09:50:36

标签: laravel-5

我有一个订购模块,其中与客户的关系为 公共职能customer(){

return $this->hasOne(Customer::class, 'id', 'customer_id');

}

我的查询以获取订单详细信息为 $ orderResponse = Order :: find(1);

我的订单资源包括, 'customer'=>新的CustomerResource($ this-> whenLoaded('customer'))

因此,预期结果是我应该在没有客户对象的情况下获取所有客户详细信息,因为在获取订单数据时不会加载它。 但这是回应。 加载集合时,它工作正常,但不适用于hasOne关系。

2 个答案:

答案 0 :(得分:1)

尝试一下

$orderResponse = Order::find(1); 
$orderResponse->customer()->id; //Customer Order Relationship

答案 1 :(得分:0)

与其在订单资源中的hasOne关系中尝试使用 when ,而不是使用 whenloaded

'customer' => $this->when($this->customer, new CustomerResource($this->customer))

如果您的客户关系不为空,它将与您的CustomerResource一起加载。