سلام به بزرگواران
من سه تیبل products categories subcategories دارم
وقتی پروداکت و کتگوری رو سینک میکنم ذخیره میشه در تیبل category_products
وقتی میخوام ساب کتگوری هم در ستون کناریش ذخیره بشه این پیغام میاد :
SQLSTATE[HY000]: General error: 1364 Field 'subcategory_id' doesn't have a default value (SQL: insert into `category_products` (`category_id`, `product_id`) values (1, 1))
این ها هم بخش از کدها هستند :
دیتابیس category_prodducts
$table->unsignedBigInteger('product_id');
$table->unsignedBigInteger('category_id');
$table->unsignedBigInteger('subcategory_id');
$table->foreign('product_id')
->references('id')
->on('products')
->onDelete('cascade');
$table->foreign('category_id')
->references('id')
->on('categories')
->onDelete('cascade');
$table->foreign('subcategory_id')
->references('id')
->on('categories')
->onDelete('cascade');
$table->primary(['category_id','product_id','subcategory_id']);
مدل product
public function CATS(){
return $this->belongsToMany(Category::class, 'category_products',
'product_id', 'category_id');
}
مدل category
public function products(){
return $this->belongsToMany(Products::class)->withTimestamps();
}
public function SUBCAT(){
return $this->belongsToMany(Category::class, 'category_category',
'product_id', 'subcategory_id');
}
این هم در کنترلر پروداکت
$data->cats()->sync($request->cats,false);
$data->subcat()->sync($request->subcategory,false);