راکت
حل شده

مشکل در update کردن پست ها

1 پاسخ

سلام دوستان وقت بخیر
من بین مدل post و user خودم ارتباط یک به چند دارم.وقتی که میخام پستی را برای کاربر خودم update کنم به ارور زیر می‌خورم

Method Illuminate\Database\Eloquent\Collection::whereId does not exist.

این از روتم

Route::get('create', function ()
{
$user = User::find(3);
$user ->posts->whereId(3)->update(['name' => 'پست فرهنگی','body' => 'This is a farhangiPost']);
});

مشکل از کجاست؟؟

ثبت پرسش جدید

پاسخ‌ها

1
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

سلام

//بجای:
$user ->posts->whereId(3)->update(['name' => 'پست فرهنگی','body' => 'This is a farhangiPost']);
// از این استفاده کنید:
$user->posts()->whereId(3)->update(['name' => 'پست فرهنگی','body' => 'This is a farhangiPost']);

تفاوتشون هم اینه که posts کوئری رو اجرا می‌کنه و نتیجه رو در قالب collection به شما بر میگردونه. و روی این کالکشن نمی‌تونید whereId رو اجرا کنید. چون این متد مخصوص query builder هست.
اما اگر یک پرانتز باز و بسته جلوی posts بذارید بجای کالکشن یک Relation بر میگردونه که میتونید بهش فاکتورهای دیگه اضافه کنید و کوئری تون رو تکمیل کنید.

شاید پاسخ شما همین‌جا باشد

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

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