محمود خسروی
3 سال پیش توسط محمود خسروی مطرح شد
4 پاسخ

ذخیره کردن گروه و زیرگروه ها

سلام من یه فرمی دارم شبیه زیر است

گروه

میخواستم بدونم با استفاده از دیتابیس چطوری میشه جدول ها را ایجاد کرد؟

این فرم یک دسته بندی داره و هر دسته میتواند چندین گروه داشته باشه و هر گروه میتواند چندین زیر گروه داشته باشه

مانند تصویر

برند و رنگ هم گروه است و اپل و سامسونگ و آبی و قرمز میشه زیر گروه

چیزی که من ایجاد کردم چچهار تا جدول است

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 را چجوری سیو کنم؟؟؟

اگر جایی هست که آنرا اشتباه وارد کردم همه کد را اصلاح کنید.

مثل این ![عکس][2] که مثلا کارت حافضه و رنگ ها میشه گروه و فاقد قابلیت دریافت کارت حافظه و پشتیبانی از کارت حافظه جانبی و مشکی ، آبی ، سبز و........... هم میشه زیرگروه آدرس بار سمت راست.

مشکل من فیلد parent_id است که چطوری بفهمونم فلان زیر گروه والد فلان گروه است

با تشکر


ثبت پرسش جدید
حسن حکمتی
تخصص : برنامه نویس وب و بلاکچین
@hekmati 3 سال پیش مطرح شد
0

سلام
پرسش رو می تونستید بهتر عنوان کنید الان آشفته به نظر میرسه. نامگذاری ها مناسب نیست!
برای اینکه مقداری سروسامان بگیره اسامی بهتری برای تیبل ها انتخاب کنید.
مثلا رنگ یک ویژگی از لیست ویژگی های نامحدود دیگه است ولی شما یه تیبل به اون اختصاص دادید. بهتره به جای تیبل colors یک تیبل ویژگی مثلا property ایجاد کنید تا از نظر اسمی ویژگی های بیشتری رو شامل بشه.


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 3 سال پیش مطرح شد
0

جدول colors را از قبل دارم به همراه جدول cokor_filter چند به چند در ارتباط هستند


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 3 سال پیش مطرح شد
0

من هم جدول را عوض کردم و هم همه کدها (blade و controller و view) را هم عوض کردم ولی شبیه این عکس دمو است چیزهایی که در جدول دارم به نام های filters و values و color_filter است. که به درستی ذخیره میشوند.

مشکل من این است که چطوری میشه فراخوانی کرد؟

آیا نیاز به جدول میانی دارد؟


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 3 سال پیش مطرح شد
0

و نکته ای که میخوام عرض کنم parent ها را میگیره یعنی آی دی را هم ذخیره میکنه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام