Home > Software design >  laravel does not exist on this collection instance
laravel does not exist on this collection instance

Time:09-20

$orders = Orders::select('orders.id as order_id', 'collection_color.color_name as color', 'collection_color.id as collection_color_id', DB::raw('SUM(order_piece.piece) As piece'))
        ->join('order_piece', 'order_piece.order_id', '=', 'orders.id')
        ->join('collection_color_size_barcode', 'collection_color_size_barcode.id', '=', 'order_piece.collection_color_size_barcode_id')
        ->join('collection_color', 'collection_color.id', '=', 'collection_color_size_barcode.collection_color_id')
        ->whereIn('orders.id', $request->order_id)
        ->groupBy('order_piece.order_id')
        ->orderBY('orders.delivery_date', 'ASC')
        ->get();

return $orders; => [{"order_id":30,"color":"Kahverengi","collection_color_id":21,"piece":"500"}]

return $ccfc = CollectionColorFabricColor::whereIn('collection_color_id', $orders->collection_color_id)->get();

Property [collection_color_id] does not exist on this collection instance. i am getting error can you help me

CodePudding user response:

The error is most likely due to this in your second code snippet: $orders->collection_color_id. $orders is a collection, so the property doesn't exist in that object. What you actually need is to pluck those values from that collection like so:

return $ccfc = CollectionColorFabricColor::query()
         ->whereIn('collection_color_id', $orders->pluck('collection_color_id'))
         ->get();

CodePudding user response:

Because your $orders is collection, you need to get collection_color_id array like this :

$arrayColors = $orders->pluck('collection_color_id')->toArray();

then

return $ccfc = CollectionColorFabricColor::whereIn('collection_color_id', $arrayColors)->get();

  • Related