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

دخیره داده در رابطه many to many

سلام
در رابطه many to many لاراول باید یک جدول رابط مین دو مدل ایجاد و از اون به عنوان ایجاد رابطه استفاده کنیم
حالا فرض کنید در اون جدول رابط به جز id دو مدل مرتبط بخوایم یه سری داده از دو مدل هم در هر رکورد ذخیره بشه
سوال اینجاست که چطور به بهینه ترین حالت پیاده سازیش کنم ؟
آیا در پیش فرض لاراول چنین چیزی هست ؟


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
2

لاراول خودش همچین حالتی رو پشتیبانی میکنه

در رابطه های چند به چند اگر بخواهی فیلد اضافه ای رو ذخیره کنی باید در حین تعریف رابطه اون فیلد ها رو مشخص کنی
برای این کار میتونی از متد withPivot استفاده کنی و لیستی از فیلدها رو بهش پاس میدی

return $this->belongsToMany('App\Model')->withPivot('column1', 'column2');

در حین استفاده از متد attach هم باید آرایه ای از اطلاعات رو پاس بدی

$user->relation()->attach($roleId, ['column1' => $column1, 'column2' => $column2]);

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

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

لینک


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
2

لاراول خودش همچین حالتی رو پشتیبانی میکنه

در رابطه های چند به چند اگر بخواهی فیلد اضافه ای رو ذخیره کنی باید در حین تعریف رابطه اون فیلد ها رو مشخص کنی
برای این کار میتونی از متد withPivot استفاده کنی و لیستی از فیلدها رو بهش پاس میدی

return $this->belongsToMany('App\Model')->withPivot('column1', 'column2');

در حین استفاده از متد attach هم باید آرایه ای از اطلاعات رو پاس بدی

$user->relation()->attach($roleId, ['column1' => $column1, 'column2' => $column2]);

احمد
@ahmad316948 3 سال پیش مطرح شد
0

@ali.bayat
سلام. در متد sync باید به چه شکل عمل کنیم؟ من یک سری دیتا میخام در جدول color_product ذخیره کنم. با متد attach همه اون دیتا ها اضافه میشه ولی در متد sync خیر .

 $product->colors()->attach($data['colors'] ,['pricecolor'=>$request ->pricecolor , 'inventory'=>$request ->inventory]);  // در متد اینجا اطلاعات به طور کامل در جدول واسط ثبت میشه اما در متد سینک خیر

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

@ahmad316948
متد sync داده های قبلی رو پاک و داده های جدید رو جایگزین میکنه


احمد
@ahmad316948 3 سال پیش مطرح شد
0

@ali.bayat
سلام کار متد sync رو میدونم. فکر می کنم سوال منو درست متوجه نشدید. من منظورم این هست که اون دیتا هایی که میخام تو جدول واسط colo_product ذخیره کنم در متد sync این اطلاعات ذخیره نمیشه ولی همین دیتا ها در متد attach به درستی ذخیره میشه. الان چجوری این اطلاعات رو توسط متد sync ذخیره کنم؟


alireza M
@alireza.mahjoor 2 سال پیش آپدیت شد
0

سلام.
شما باید از دستور syncWithPivotValues استفاده کنی.
$user->role()->syncWithPivotValues($role, ['name' => 'sth'])


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

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