ذخیره کردن گروه و زیرگروه ها
https://lamtakam.com/qanda/3708/ذخیره-کردن-گروه-و-زیرگروه-ها 1سلام من یه فرمی دارم شبیه زیر است
میخواستم بدونم با استفاده از دیتابیس چطوری میشه جدول ها را ایجاد کرد؟
این فرم یک دسته بندی داره و هر دسته میتواند چندین گروه داشته باشه و هر گروه میتواند چندین زیر گروه داشته باشه
مانند تصویر
برند و رنگ هم گروه است و اپل و سامسونگ و آبی و قرمز میشه زیر گروه
چیزی که من ایجاد کردم چچهار تا جدول است
public function up()
{
Schema::create('check_boxes', function (Blueprint $table) {
$table->id();
$table->foreignId('filter_id')->constrained()->cascadeOnDelete();
$table->string('checkbox');
$table->timestamps();
});
}
public function up()
{
Schema::create('colors', function (Blueprint $table) {
$table->id();
$table->string('color_name');
$table->string('color_code');
$table->timestamps();
});
}
public function up()
{
Schema::create('filters', function (Blueprint $table) {
$table->id();
$table->foreignId('category_id')->constrained()->cascadeOnDelete();
$table->string('name');
$table->string('latin');
$table->boolean('field');
$table->timestamps();
});
Schema::create('color_filter', function (Blueprint $table) {
$table->foreignId('color_id')->constrained()->cascadeOnDelete();
$table->foreignId('filter_id')->constrained()->cascadeOnDelete();
$table->primary(['color_id', 'filter_id']);
});
}
مشکل من این است که چطوری بفهمونم فلان زیر گروه والد فلان گروه است parent_id را در کجای جدول بالا قرار بدهم
public function store(Request $request)
{
if ($request->filters) {
foreach ($request->filters as $filter) {
$filter = Filter::create([
'name' => $filter['name'],
'latin' => $filter['latin'],
'field' => $filter['field'],
'category_id' => $request->category_id,
]);
}
if ($request->checkbox) {
foreach($request->checkbox as $key => $checkbox) {
$filter->checkBoxes()->create([
'filter_id' => $filter->id,
'checkbox' => $request->checkbox[$key],
]);
}
}
$filter->colors()->attach($request->color_id);
}
return redirect()->route('filters.index');
}
الان این کد بالا درست کار میکند و ذخیره سازی را انجام میدهد و خطا ندارد و مشکل من اینه parent_id را چجوری سیو کنم؟؟؟
اگر جایی هست که آنرا اشتباه وارد کردم همه کد را اصلاح کنید.
با تشکر
الان مشخصا مشکلتون کجاست؟ برای فرمی که اسکرین شاتش رو گذاشتید، چند جدول ساده با یک سری FK نیاز هست که روابط رو بهم متصل میکنه. برای گروه ها و زیر گروه ها، خب طبیعتا به 2 جدول دیگه نیاز دارید که هر کدوم یه فارن-کی داره و ارتباطش رو به parentش نشون میده. توی دیتابیس های رابطه ای، پیاده سازی این ساختار چیز پیچیده ای نیست. ــ ساناز رضایی در 3 سال قبل | |||
من کدهای شما رو بررسی کردم. سوال اول من اینه که دقیقا چه چیزی «گروه» هست و چه چیزی «زیر گروه»؟ مثلا برند گروه هست و رنگ زیر گروه؟ چرا که این دو هوویت های مستقل از هم هستن و نمیشه این فرض رو براشون داشت. مفهوم گروه و زیر گروه زمانی پیدا میکنه که به صورت ارث بری باشه. مثلا توی دیجی کالا، یه گروه «لوازم دیجیتال» داریم، که این گروه یک سری زیر گروه داره مثل «دوربین، تلوزیون، موبایل و ..» .. الان اگه بخواید یک مثال بزنید از گروه و زیر گروه در پروژتون، چی میگید؟ ــ ساناز رضایی در 3 سال قبل | |||
نمیدونم بعد از این مدت همواره مشکلتون پابرجاست یا حل شده؛ ولی باید بگم مشکل دقیقتون هنوز برای من شفاف نشده. اینکه چطوری بفهمید کدام گروه والد کدام زیرگروه هست که خب با join مشخص میشه مبنی بر ستونهایی که توی on میگذارید (این در حالتیه که بخواید query خام بنویسد). اگر هم بخواید از روابط خود لاراول استفاده کنید، که صرفا کافیه یک رابطه hasMany() در مدل گروه ها، و یک رابطه hasOne() توی مدل زیرگروه ها تعریف کنید و به راحتی به دیتای مورد نیاز دسترسی پیدا بکنید. ــ ساناز رضایی در 3 سال قبل |
|||
هیچ کدوم از انا نبود تمام کدها و جداول دیتابیس از اول نوشتم ــ Mahmoud Khosravi در 3 سال قبل |