scream3196 0 گزارش دادن ارسال شده در شهریور 0 سلام به بزرگواران من سه تیبل 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); نقل قول Share this post Link to post Share on other sites
saber 143 گزارش دادن ارسال شده در شهریور 0 در مقادیر ارسالی شما فقط دو تا مقدار شناسه محصول و مجموعه رو ارسال میکنید و برای زیرمجموعه مقداری ارسال نشده و چون توی دیتابیس ستون زیرمجموعه مقدار پیشفرض نداره خطا میده اگه منطق برنامه اتون این هست که همیشه زیرمجموعه داشته باشید باید مقدارش رو هم برای sync ارسال کنید در غیراینصورت باید ستون زیرمجموعه رو nullable کنید نقل قول Share this post Link to post Share on other sites
scream3196 0 گزارش دادن ارسال شده در شهریور 0 یه محصول یه کتگوری و یه ساب دارم.هر سه در سه تیبل جداگانه. برای هر کدوم هم یه pivot تیبل هم زدم. category_products category_subcategory از این کد برای ذخیره آی دی های محصول و دسته استفاده میکنم $data->cats()->sync($request->category_id,false); و از این کد هم برای ذخیره آی دی دسته و سابش : $data1->subcat()->sync($request->subcat,false); محصول و دسته اوکیه ولی دسته و سابش فقط دسته بدرستی ذخیره میشه و ساب یه ای دی کمتر ذخیره میکنه مثلا : دسته شماره سه و ساب شماره ۳ ولی موقع ذخیره ۳ و ۲ ذخیره میشن. این کد هم توی مدل محصول : 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); } امیدوارم درست تونسته باشم توضیح بدم نقل قول Share this post Link to post Share on other sites