如果在雄辩的查询中使用join语句,则无法将关系作为属性访问

时间:2018-09-12 10:57:41

标签: php laravel eloquent

大家好,当我做这样的事情时,有什么特别的原因

$order = Order::with(['company'])->find($id); 
dd($order->company)

返回公司的价值,但是如果我做类似的事情

$order = Order::with(['company']->join('customers', 'orders.customer_id', '=', 'customers.id')->find($id);
dd($order->company)

它返回null,但是如果dd($ order)显示存在关系,而$ order-> toArray()显示存在该公司。如果我将join语句添加到查询中,我简直无法像属性一样访问它。

1 个答案:

答案 0 :(得分:0)

您必须限制所选的列:

$order = Order::select('orders.*', 'customers.first_name', 'customers.last_name')
    ->join('customers', 'orders.customer_id', '=', 'customers.id')
    ->with('company')
    ->find($id):