سلام دوستان وقت بخیر
من بین مدل 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']);
});
مشکل از کجاست؟؟
سلام
//بجای:
$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 بر میگردونه که میتونید بهش فاکتورهای دیگه اضافه کنید و کوئری تون رو تکمیل کنید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟