Laravel:无法将类App \ Models \ DeliveryList的对象转换为int

时间:2018-07-26 15:44:22

标签: laravel eloquent laravel-5.4

我的模特看起来像这样

public function deliveryList() {
    return $this->hasMany( DeliveryList::class, 'order_lists_id' );
}

在我尝试的刀片中

$ deliveryStatus = $ order-> deliveryList-> last()-> delivery_status_id; 而dd($deliveryStatus) = 6 //这就是我想要的

但是尝试做类似

的操作时
@if($deliveryStatus != 6 && $order->order_state_id !=4)
    <td class="text-center">
        {!! $order->deliveryList->last()->deliveryStatus->delivery_status !!}
    </td>
@elseif($order->deliveryList->last() == 6 and $order->order_state_id == 2)
    <td class="text-center">
        <a href="{!! URL::route('delivery.create', 'order='.$order->id) !!}"
           class="btn btn-success btn-outline">{{ trans('interface.makeDeliveryRequest') }}
        </a>
    </td>
@elseif($order->deliveryList->last() == null and $order->order_state_id == 2)
    <td class="text-center">
        <a href="{!! URL::route('delivery.create', 'order='.$order->id) !!}"
           class="btn btn-success btn-outline">{{ trans('interface.makeDeliveryRequest') }}
        </a>
    </td>
@endif

得到

  

App \ Models \ DeliveryList类的对象无法转换为int

如果我使用@if($deliveryStatus != null and $order->order_state_id !=4)可以使用,但是我需要指定ID 6

更新 这也是控制器的一部分,也许我在这里误了点

public function index(Request $request)
{
    $dateFrom = $request->get('dateFrom');
    $dateTo = $request->get('dateTo');
    $status = $request->get('orderState');
    $platform = $request->get('platform');
    $dashQuery = $request->get('dashQuery');

    $orders = (new OrderList())
        ->where('order_state_id', '!=', null)
        ->where('address_id', '!=', null)
        ->where('user_id', '!=', null)
        ->whereHas('orderDetail', function ($query) {
            $query->where('supplier_id', Auth::guard('supplier')->user()->id);
            $query->where('order_lists_id', '!=', null);
            $query->where('product_id', '!=', null);
            $query->where('quantity', '!=', 0);
        })
        ->with('deliveryList')
        ->when($dateFrom, function ($query) use ($dateFrom) {
            $query->whereDate('created_at', '>=', $dateFrom);
        })
        ->when($dateTo, function ($query) use ($dateTo) {
            $query->whereDate('created_at', '<=', $dateTo);
        })
        ->when($status, function ($query) use ($status) {
            $query->where('order_state_id', $status)->get();
        })
        ->when($dashQuery, function ($query) use ($dashQuery) {
            switch ($dashQuery) {
                case 'all':
                    $query->whereIn('order_state_id', [1, 2])->get();
                    break;
                case 'today':
                    $query->whereIn('order_state_id', [1, 2])
                        ->whereDate('created_at', Carbon::today())->get();
                    break;
                case 'twoDays':
                    $query->whereIn('order_state_id', [1, 2])
                        ->whereDate('created_at', '>=', Carbon::today()->subDays(2))
                        ->whereDate('created_at', '<', Carbon::today())->get();
                    break;
                case 'threeDays':
                    $query->whereIn('order_state_id', [1, 2])
                        ->whereDate('created_at', '>=', Carbon::today()->subDays(365))
                        ->whereDate('created_at', '<', Carbon::yesterday())->get();
                    break;
            }

        })
        ->when($platform, function ($query) use ($platform) {
            $query->where('platform', $platform)->get();
        })
        ->orderBy('id', 'desc')
        ->paginate(15);

1 个答案:

答案 0 :(得分:0)

如果您使用

OrderList::with('deliveryList')->...

然后,您将获得一个 Colection OrderList ,它具有一个属性 relationship (“ deliveryList”),deliveryList可以为null或数组。如果为null,则无法获得delivery_status_id。

$deliveryStatus = $order->deliveryList->last() ? $order->deliveryList->last()->delivery_status_id : 0/null

您dd($ deliveryStatus)= 6,因为它是第一次集合并且具有deliveryList