سلام دوستان من میخوام جدیدترین پست فالویینگ های یوزر لاگین کرده رو از دیتابیس بگیرم یه چیزی شبیه اینستاگرام که تو صفحه اصلی جدید ترین پست کسایی که فالو کردی رو نشون میده
این شکلی که تست کردم ارور داد
$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');
});شاید پاسخ شما همینجا باشد