Many to many relationship in filament
i have this code for create new product with units
class CreateProduct extends CreateRecord
{protected static string $resource = ProductResource::class;
protected function handleRecordCreation(array $data): Product
{
Log::info('FormData:', $data);
return DB::transaction(function () use ($data) {
$product = Product::create($data);
if (isset($data['units']){foreach ($data['units'] as $unitData)
{
Log::info('Unit Data:', $unitData);
if (!isset($unitData['price']) || is_null($unitData['price']))
{
Log::error('Price is missing for unit', $unitData);continue;} $price = intval($unitData['price']);
$product->units()->attach($unitData['unit_id'], ['price' => $price]);
Log::info('Attached Unit with Price:', [
'product_id' => $product->id,
'unit_id' => $unitData['unit_id'],
'price' => $price, ]);
} }
return $product;}); }}
when i create 2 uints with prices or above i saw error in third image how can i solve it product mode has
class Product extends Model
{use HasFactory; protected $table = "products" ;
protected $fillable = [ 'name_ar' ,'name_en' , 'description_ar' , 'description_en' , 'image' ,'category_id' , 'is_activated',
];
public function toArray()
{ $array = parent::toArray();
$array['units'] = $this->units->map(function ($unit) {return ['id' => $unit->id, 'name' => $unit->name, 'price' => $unit->price,]; });
return $array;
}
public function units()
{ return $this->belongsToMany(Unit::class, 'products_units')->withPivot('price');}
}
class CreateProduct extends CreateRecord
{protected static string $resource = ProductResource::class;
protected function handleRecordCreation(array $data): Product
{
Log::info('FormData:', $data);
return DB::transaction(function () use ($data) {
$product = Product::create($data);
if (isset($data['units']){foreach ($data['units'] as $unitData)
{
Log::info('Unit Data:', $unitData);
if (!isset($unitData['price']) || is_null($unitData['price']))
{
Log::error('Price is missing for unit', $unitData);continue;} $price = intval($unitData['price']);
$product->units()->attach($unitData['unit_id'], ['price' => $price]);
Log::info('Attached Unit with Price:', [
'product_id' => $product->id,
'unit_id' => $unitData['unit_id'],
'price' => $price, ]);
} }
return $product;}); }}
when i create 2 uints with prices or above i saw error in third image how can i solve it product mode has
class Product extends Model
{use HasFactory; protected $table = "products" ;
protected $fillable = [ 'name_ar' ,'name_en' , 'description_ar' , 'description_en' , 'image' ,'category_id' , 'is_activated',
];
public function toArray()
{ $array = parent::toArray();
$array['units'] = $this->units->map(function ($unit) {return ['id' => $unit->id, 'name' => $unit->name, 'price' => $unit->price,]; });
return $array;
}
public function units()
{ return $this->belongsToMany(Unit::class, 'products_units')->withPivot('price');}
}




