【发布时间】:2020-03-28 06:22:32
【问题描述】:
我有一个显示订单详细信息的视图,但无法读取所有者的属性名称。
错误信息
试图获取非对象的属性“名称”(查看:C:\xampp\htdocs\Cuppy_Webshop\resources\views\orders\showOrder.blade.php)
控制器
public function show($id){
$order = Order::with(['owner' => function ($query){
$query->select('id', 'name');
}])->where('id', '=', $id)->firstOrFail();
return view('orders/showOrder', [
'order' => $order,
]);
}
型号
public function owner(){
return $this->belongsTo('App\User', 'owner');
}
刀片
<tbody>
<tr>
<td scope="col">{{$order->id}}</td>
<td scope="col">{{$order->clip}}</td>
<td scope="col">{{$order->engraving}}</td>
@if ($order->engraving == 1)
<td scope="col">{{$order->front_img}}</td>
<td scope="col">{{$order->back_img}}</td>
@endif
<td scope="col">{{$order->location}}</td>
<td scope="col">{{$order->ordered_at}}</td>
<td scope="col">{{$order->delivered_at}}</td>
<td scope="col">{{$order->status}}</td>
<td scope="col">{{$order->cup_id}}</td>
<td scope="col">{{$order->owner->name}}</td>
</tr>
</tbody>
JSON
我让控制器返回 json 以查看格式是否有问题或属性名称是否未发送。一切似乎都很好:
{
"id": 1,
"clip": 1,
"engraving": 1,
"front_img": "Zelda",
"back_img": "Ultra Smurf",
"location": "Foodlab",
"ordered_at": "2019-11-28 15:30:37",
"delivered_at": null,
"status": "not payed",
"cup_id": 1,
//the owner object
"owner": {
"id": 1,
"name": "Daan"
}
}
我尝试了什么
我尝试将所有者的名称称为关联数组,但返回 null。我在视图中转储了$order,该视图确实显示所有者具有属性名称。谷歌搜索只是给了我归结为语法错误或错误使用 ORM 的结果。让朋友查看我的代码是否有语法错误,但一无所获。
【问题讨论】:
-
所有者是一个模型,您在 Order 模型中是否有正确的外键绑定?听起来好像 $order->owner 函数没有返回关系实例,你能发布 owner() 函数吗?
-
@Tim Yes Owner 是 Model 我将发布具有关系的函数
标签: php laravel laravel-blade laravel-6