$data */ public function create(array $data): PackagingItem { $attrs = $this->extractAttributes($data); \DB::enableQueryLog(); try { $item = PackagingItem::create($attrs); } catch (\Throwable $e) { $queries = \DB::getQueryLog(); $lastQ = end($queries); \Log::error('PackagingItem CREATE FAILED', [ 'error' => $e->getMessage(), 'sql' => $lastQ['query'] ?? 'unknown', 'bindings' => $lastQ['bindings'] ?? [], 'binding_types' => array_map(fn($v) => gettype($v) . ':' . json_encode($v), $lastQ['bindings'] ?? []), 'attributes_passed' => $attrs, ]); throw $e; } \DB::disableQueryLog(); return $item; } /** * @param array $data */ public function update(PackagingItem $packagingItem, array $data): PackagingItem { $packagingItem->update($this->extractAttributes($data)); return $packagingItem->fresh(); } /** * @param array $data * @return array */ protected function extractAttributes(array $data): array { $attrs = collect($data)->only([ 'packaging_material_id', 'supplier_id', 'name', 'category', 'weight_grams', 'min_stock_alert', 'url', 'product_id', 'active', ])->all(); $attrs['weight_grams'] = $attrs['weight_grams'] ?? 0; return $attrs; } }