【问题标题】:laravel get Data from table using model in laravel 5.2laravel 使用 laravel 5.2 中的模型从表中获取数据
【发布时间】:2016-11-16 22:52:20
【问题描述】:

我想查看供应商名称和将订单分配给供应商的用户。但是每次我得到这个错误

b6bb559eccdc8a2d45a2d2d6ce89e8e217411386.php 第 26 行中的 ErrorException: 试图获取非对象的属性(查看:E:\xampp\htdocs\ftdindia\resources\views\view\Orders\allorder.blade.php) 在 b6bb559eccdc8a2d45a2d2d6ce89e8e217411386.php 第 26 行 在 CompilerEngine->handleViewException(object(ErrorException), '1') 在 PhpEngine.php 第 44 行

我的代码如下

订单控制器

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

【问题讨论】:

  • 你认为哪一行是第-26行??
  • 26 行视图 {{ $order->vendor->username }}
  • 尝试在您的模型中将方法名称“vendor()”更改为其他名称“order_vendor()”。然后在视图中使用它,例如 - $order->order_vendor->username。基于此链接 - laravel.io/forum/…

标签: laravel laravel-5.2


【解决方案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');
    } 

【讨论】:

    【解决方案2】:

    您遇到的错误与您在 $order 集合中调用 vendor() 函数的方式有关。

    docs 是深入了解这一点的好地方,但基本上所有 Eloquent 关系都是通过函数定义的,因此您可以调用这些函数来获取关系的实例,而无需实际执行关系查询。

    因此它必须是:

    <td>{{ $order->vendor()->username }}</td> 
    

    我们现在没有链接 vendor() 而不是 vendor。

    【讨论】:

    • 不工作.....我做了一些更改,但只返回 1 .....这里是更改... {{ !is_null($order->assignedBy ? $order ->assignedBy->用户名:null) }}
    • 你又犯了同样的错误,试试assignedBy()而不是assignedBy。
    • 嗯,谢谢你......我已经找到了解决方案,实际上你是让我知道存在问题
    猜你喜欢
    • 2021-01-19
    • 2021-06-19
    • 2016-03-29
    • 2017-05-30
    • 2020-03-17
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多