سلام دوستان من میخوام جدیدترین پست فالویینگ های یوزر لاگین کرده رو از دیتابیس بگیرم یه چیزی شبیه اینستاگرام که تو صفحه اصلی جدید ترین پست کسایی که فالو کردی رو نشون میده
این شکلی که تست کردم ارور داد
$user->following()->posts()->latest()->cursorPaginate(6);
مدل یوزرم
public function following()
{
return $this->belongsToMany(User::class, 'followers', 'follower_id', 'user_id');
}
public function posts()
{
return $this->hasMany(Post::class);
}
اینم ارورش
Call to undefined method Illuminate\Database\Eloquent\Relations\BelongsToMany::posts()
پیشنهادی دارید؟
من از این کد استفاده کردم که جوین میکنه و سرعتش بهتر اینه که همه لیست فالوینگ ها رو بگیری چون یوزر ممکنه چند میلیون فالوینگ داشته باشه
Post::with('user')
->join('followers', 'followers.user_id', '=', 'posts.user_id')
->where('followers.follower_id', $user->id)
->latest()
->cursorPaginate(8);
@rezajahangir مدل یوزر رو دو تا رابطه هاشو کداشو قرار دادم و مدل Following ندارم چون جدول رابطه اگه migration رو میخواید
create_followers_table
Schema::create('followers', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id');
$table->foreign('user_id')->on('users')->references('id')->onDelete('CASCADE');
$table->foreignId('follower_id');
$table->foreign('follower_id')->on('users')->references('id')->onDelete('CASCADE');
});
یه راه ساده اینه که از روی مدل پست نتیجه رو پیدا کنید
$userIds = $user->following()->pluck('user_id');
$posts=Post::whereIn('user_id',$userIds)->orderBy('created_at','desc')->paginate(6)
سلام
داری نسخه ایرانی میسازی برای اینستا ؟ 😂
فکر کنم که باید این posts رو تو مدل following بزاری ..
من از این کد استفاده کردم که جوین میکنه و سرعتش بهتر اینه که همه لیست فالوینگ ها رو بگیری چون یوزر ممکنه چند میلیون فالوینگ داشته باشه
Post::with('user')
->join('followers', 'followers.user_id', '=', 'posts.user_id')
->where('followers.follower_id', $user->id)
->latest()
->cursorPaginate(8);
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟