我想获得vendor_name和在视图中为供应商分配订单的用户。但每次我收到此错误
b6bb559eccdc8a2d45a2d2d6ce89e8e217411386.php第26行中的ErrorException: 试图获取非对象的属性(查看:E:\ xampp \ htdocs \ ftdindia \ resources \ views \ view \ Orders \ allorder.blade.php) 在b6bb559eccdc8a2d45a2d2d6ce89e8e217411386.php第26行 at CompilerEngine->在PhpEngine.php第44行中的handleViewException(object(ErrorException),'1')
我的代码如下:
订单控制器
public function allorder(){
$orders = OrderGrid::paginate(100);
return view ('view.Orders.allorder', ['orders' => $orders]);
//dd($orders->all());
}
这是我的模特
class OrderGrid extends model{
protected $table = 'order_grids';
public function vendor() {
return $this->belongsTo(User::class);
}
public function assignedBy() {
return $this->belongsTo(User::class, 'vendor_assigned_by_user');
}
}
这是我的观点
@foreach($orders as $order)
<tr>
<td> {{ $i }}</td>
<td>{{ $order->order_id }}</td>
<td>{{ $order->vendor->username }}</td>
<td>{{ $order->assignedBy->username }}</td>
<td>{{ $order->delivery_city }}</td>
<td>{{ $order->delivery_date }}</td>
<td>{{ $order->delivery_time }}</td>
<td>{{ $order->order_statuss }}</td>
<td>{{ $order->order_status }}</td>
<td>
@if(!$order->vendor_id)
Unassigned
@else
Assigned
@endif
</td>
<td></td>
</tr>
<?php $i +=1; ?>
@endforeach
答案 0 :(得分:1)
@foreach($orders as $order)
<tr>
<td> {{ $i }}</td>
<td>{{ $order->order_id }}</td>
<td>{{ $order->vendor->username }}</td> inspite of this do <td>{{ !is_null($order->vendorName) ? $order->vendorName->username : null }}</td>
<td>{{ $order->assignedBy->username }}</td> and same here also <td>{{ !is_null($order->assignedBy) ? $order->assignedBy->username : null }}</td>
<td>{{ $order->delivery_city }}</td>
<td>{{ $order->delivery_date }}</td>
<td>{{ $order->delivery_time }}</td>
<td>{{ $order->order_statuss }}</td>
<td>{{ $order->order_status }}</td>
<td>
@if(!$order->vendor_id)
Unassigned
@else
Assigned
@endif
</td>
<td></td>
</tr>
<?php $i +=1; ?>
@endforeach
和模型
public function vendorName() {
return $this->belongsTo('App\Model\User', 'vendor_id', 'id');
}
public function assignedBy() {
return $this->belongsTo('App\Model\User', 'assigned_by', 'id');
}
答案 1 :(得分:0)
您获得的错误与您在vendor()
集合中调用$order
函数的方式有关。
docs是对此有充分理解的好地方,但基本上所有Eloquent关系都是通过函数定义的,因此您可以调用这些函数来获取关系实例,而无需实际执行关系查询。
因此需要:
<td>{{ $order->vendor()->username }}</td>
我们现在没有任何东西链接供应商()而非供应商。