علی باقری
3 سال پیش توسط علی باقری مطرح شد
2 پاسخ

مشکل relation sync در لاراول

سلام دوستان .
وقت بخیر .
امید وارم خوب باشید .

من یک جدولی دارم به به اسم customer_owner که یک جدول واسطه هست و یک فیلد status هم به صورت pivot داره به این صورت :

  • customer_id
  • owneri_d
  • status

مشکل اینجاست که ما یک سری متد داریم برای ذخیره کردنشون :

  • attach
  • sync
  • syncWithoutDetaching

حالا -> من اگه 10 تا رکورد ثبت کنم و status = 0 باشه و بعد از فراخوانی اونها برم status = 1 کنم ، دفعه بعد بخوام توسط متد های بالا 5 تای اونهارو ذخیره کنم یک مشکلی هست : یا استاتوس ها اعمال نمیشن چون از اول اتچ میشه . یا اعمال میشه و همون 10 تارو نشون میده !!

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


ثبت پرسش جدید
علی باقری
تخصص : برنامه نویس وب
@alibagheri 3 سال پیش آپدیت شد
0

جواب سوال بالا
شما میتونید به متد sync مقدار pivot رو بدید و در هر بار اینم به همراه بقیه آپدیت میشه .

sync([
    related_id => ['pivot_field' => value],
    ...
]);

محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش آپدیت شد
1

دو مثال زیر در مستندات رسمی لاراول آورده شده و به نظرم پاسخ سوالتون هم هست:

$user->roles()->sync([1, 2, 3]);

//You may also pass additional intermediate table values with the IDs:
$user->roles()->sync([1 => ['expires' => true], 2, 3]);

//If you would like to insert the same intermediate table values
//with each of the synced model IDs, you may use the syncWithPivotValues method:
$user->roles()->syncWithPivotValues([1, 2, 3], ['active' => true]);

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

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