laravel使用laravel 5.2中的模型从表中获取数据

时间:2016-07-14 06:39:45

标签: laravel laravel-5.2

我想获得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

2 个答案:

答案 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> 

我们现在没有任何东西链接供应商()而非供应商。