سلام
مشکلی که دارم با سینک کردن subcategory هستش
محصول و دسته براحتی سینک میشند ولی زیر گروه رو نمیتونم
اینم کدها :
در مدل product :
public function subcategory()
{
return $this->belongsToMany(SubCategory::class,
'category_products','subcategory_id','category_id' );
}
مدل category :
public function subcategory()
{
return $this->belongsToMany(Subcategory::class,
'category_subcategory', 'category_id', 'subcategory_id' );
}
مدل subcategory :
public function category(){
return $this->belongsToMany(Category::class)->withTimestamps();
}
دیتابیس :
```
$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');
پیغام خطا :
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))
ممنون میشم اگه کمک کنید
فارغ از کدهای فعلیتون (که خیلی بهم ریز هم نوشته شده و نیاز به ویرایش markdown داره) هدفتون دقیقا چیه...؟ احساس میکنم از نظر طراحی منطقی، روابطتون نیازمند بازنگری و اصلاح هست.
اول رابطه ها رو مشخص کنید که به چه صورت باید باشه. مثلا رابطه محصول و دسته بندی که احتمالا باید از نوع one-to-many باشه. یا رابطه category و subcatgory هم به همین صورت.
اگر اینطوره چرا دارید از many-to-many استفاده میکنید...؟ علت خاصی داره این موضوع؟
اگر آره یکم بیشتر توضیح بدید که خروجی مدنظرتون چی هست؟
بله حق باشماست کدها در حال حاضر بهم ریخته س تا چندتا از ایرادها رو رفع کنم بعد برسم به مرتب کردنشون
اما در مورد سناریو. یه محصول یه کتگوری و یه ساب دارم.هر سه در سه تیبل جداگانه.
برای هر کدوم هم یه pivot تیبل هم زدم.
category_products
category_subcategory
از این کد برای ذخیره آی دی های محصول و دسته استفاده میکنم
$data->cats()->sync($request->category_id,false);
و از این کد هم برای ذخیره آی دی دسته و سابش :
$data1->subcat()->sync($request->subcat,false);
محصول و دسته اوکیه ولی دسته و سابش فقط دسته بدرستی ذخیره میشه و ساب یه ای دی کمتر ذخیره میکنه
مثلا : دسته شماره سه و ساب شماره 3 ولی موقع ذخیره 3 و 2 ذخیره میشن.
این کد هم توی مدل محصول :
public function CATS(){
return $this->belongsToMany(Category::class, 'category_products',
'product_id', 'category_id');
}
این کد هم برای مدل دسته :
public function subcat()
{
return $this->belongsToMany(SubCategory::class, 'category_subcategory',
'category_id', 'subcategory_id');
}
این کد هم برای مدل ساب :
public function category(){
return $this->hasMany(Category::class);
}
public function products()
{
return $this->hasMany(Products::class);
}
امیدوارم درست تونسته باشم توضیح بدم
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟