Search code examples
laraveldatabasefunctionmigrationschema

Can't update my inventory table with array laravel


I have an array list of data I want to update to the inventory table.

              $data['items'] = DB::table('inventory_items')->select('inventory_items.*')
                ->join('sorder_parts', 'inventory_items.id', 'sorder_parts.inventory_id')
                ->where('sorder_parts.sorder_id', '=', $id)
                ->selectraw('inventory_items.quantity - sorder_parts.quantity AS new_quantity')
                ->get()->toArray();

            foreach ($data as $product_item) {
                $reduce_quantity = InventoryItem::updateOrCreate(['id' => $product_item['items']['id']],
                ['quantity' => $product_item['quantity']['new_quantity']]);      
            }

Solution

  • Try this

    $data['items'] = DB::table('inventory_items')
        ->select('inventory_items.*')
        ->join('sorder_parts', 'inventory_items.id', '=', 'sorder_parts.inventory_id')
        ->where('sorder_parts.sorder_id', '=', $id)
        ->selectRaw('inventory_items.id, inventory_items.quantity - sorder_parts.quantity AS new_quantity')
        ->get();
    
    foreach ($data['items'] as $product_item) {
        InventoryItem::updateOrCreate(
            ['id' => $product_item->id], // Use $product_item->id instead of $product_item['items']['id']
            ['quantity' => $product_item->new_quantity] // Use $product_item->new_quantity instead of $product_item['quantity']['new_quantity']
        );
    }