簡體   English   中英

Laravel-無法使用雄辯的模型方法

[英]Laravel - cannot use Eloquent model method

distributor_requisition_items具有以下列: requisition_idproduct_idmeasuring_unit_idquantity

在模型DistributorRequisition.php ,我具有:

   class DistributorRequisition extends Model
    {

       public function items()
        {
            return  $this->belongsToMany('App\Product','distributor_requisition_items',
'requisition_id','product_id')->withPivot('measuring_unit_id','quantity');
        }


    }

在控制器中,我有:

    class CurrentInventoryController extends Controller
    {
            public function distributor_inventory(Request $request)
                {

                     $distributor_requisition=DistributorRequisition::get();

                     $distributor_requisitions_all= $distributor_requisition->items; 
// this line produces an error



                     return view('admin.current_inventory.distributor-inventory',
        compact('distributor_requisitions_all','stores',.....));

    }
    }

distributor-inventory.blade.php ,我有:

    @foreach($distributor_requisitions_all as $aP)

      {{$aP->items->measuring_unit_id}}

    @endforeach

我收到以下錯誤:

Collection.php第1527行中的異常:此集合實例上不存在屬性[items]。

在CurrentInventoryController.php第64行的Collection-> __ get('items')的Collection.php第1527行中

控制器中的第64行具有: $distributor_requisitions_all= $distributor_requisition->items;

那么如何在控制器中使用雄辯的模型方法items ,以便我可以訪問視圖中的distributor_requisitions_all變量以從中提取值?

$distributor_requisition=DistributorRequisition::get(); 是Model DistributorRequisition的集合,而items是模型內部的方法,這就是它給您帶來錯誤的原因..您不能直接從集合中調用Model方法並解決您必須解決的問題是

在你的職能

public function distributor_inventory(Request $request)
{
    $distributor_requisition=DistributorRequisition::get();
    return view('admin.current_inventory.distributor-inventory',
    compact('distributor_requisition','stores',.....));
}

在你看來

@foreach($distributor_requisition as $aP)

    // {{ $aP->items->measuring_unit_id }}
    // that will give you error since $aP->items is another collection of many model item what you can do is add another loop

    @foreach($aP->items as $item)
        $item->pivot->measuring_unit_id }}
    @endforeach

@endforeach

使用with()方法代替get()。

public function distributor_inventory(Request $request)
{
    $distributor_requisition=DistributorRequisition::with('items');
    return view('admin.current_inventory.distributor-inventory', ['distributor_requisitions_all' => $distributor_requisition]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM