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']]);
}
3
Answers
Probably $product_item variable does not have items key. Try to change "$product_item[‘items’][‘id’]" to "$product_item[‘id’]".
Because "DB" facade with get() method does not return a deep array.
Try this
Maybe you didn’t define
$fillable
property in theInventoryItem
model.So first of all, check your model and make sure you defined
$fillable
in it.If it’s defined, try debugging
$reduce_quantity
using thedd()
orLog::info()
function like below,check your log file and see what the output is.