عرض ادب خدمت مهندسین عزیز🌹 بنده در درک این بخش کد برای اعتبار سنجی مشکل دارم و مفهومش را متوجه نمی شم.(بیشتر مفهوم attach متوجه نمی شم)
public function store(Request $request)
{
$validated = $request->validate([
'users' => 'nullable|array|exists:users,id',
]);
$discount = Discount::create($validated);
$discount->users()->attach($validated['users']);
و در اینجا هم ادامه همان کد در بخش update ولی اینبار مشکل در درک sync و detach دارم
public function update(Request $request,Discount $discount)
{
$validated = $request->validate([
'users' => 'nullable|array|exists:users,id',
]);
$discount->update($validated);
isset($validated['users'])
? $discount->users()->sync($validated['users'])
: $discount->users()->detach();
سلام
دوست من attach و sync و detach ربطی به validation کردن اطلاعات نداره
این موارد برای اضافه کردن اطلاعات به جداول دارای روابط هست.
در کد اول
$discount = Discount::create($validated);
اینجا discount جدید ساخته میشه
و با attach
$discount->users()->attach($validated['users']);
در اینجا همینطور که میبینید discount که ساخته شد با discount->user() داره به رابطه مدل discount با مدل user اشاره میکنه که با attach و دادن user بهش خودکار جدول رابط رو برای این discount و user پر میکنه
در آخر sync کارش اینه که همه رابطه های موجود discount رو حذف میکنه و این جدید هارو توش میریزه
و detach رابطه که بهش اشاره شده رو حذف میکنه
این دو بخشی که فرمودید ارتباطی با خود validate ندارن
متدهایی برای اتصال چند به چند هست. در elequent وقتی میخوایید دوتا جدول رو از طریق یه جدول واسطه به هم متصل کنید، بعد از این که در مدل های دو جدول اصلی تعریف کردید که ارتباطشون با هم از طریق کدوم جدول واسطه هست، برای اتصال رکورد های این دو جدول به هم دیگه از متد های زیر استفاده میشه
برای متصل کردن یه رکورد از جدول categories به products
$products->categories()->attach($category_id );
برای قطع اتصال یه رکورد از جدول categories به products
$products->categories()->detach($category_id );
و اگر بخواییم دسته ای چند تا رکورد با آید های 1 و 2 و 3 از جدول categories رو با یه رکورد از جدول products متصل کنیم با sync اینکار انجام میشه
$products->categories()->sync([1, 2, 3]);
و همچنین اگر میخوایید id های ۱ ۲ ۳ اضافه بشن و اگر id دیگه ای هم از قبل بود حذف نشه اینجوری
$products->categories()->syncWithoutDetaching([1, 2, 3]);
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟