راکت
حل شده

Chaining Relationship

5 پاسخ

سلام دوستان من میخوام جدیدترین پست فالویینگ های یوزر لاگین کرده رو از دیتابیس بگیرم یه چیزی شبیه اینستاگرام که تو صفحه اصلی جدید ترین پست کسایی که فالو کردی رو نشون میده
این شکلی که تست کردم ارور داد

$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()

پیشنهادی دارید؟

ثبت پرسش جدید

پاسخ‌ها

5
Ali
Ali
@411proplayer
بهترین پاسخ

من از این کد استفاده کردم که جوین میکنه و سرعتش بهتر اینه که همه لیست فالوینگ ها رو بگیری چون یوزر ممکنه چند میلیون فالوینگ داشته باشه

Post::with('user')
            ->join('followers', 'followers.user_id', '=', 'posts.user_id')
            ->where('followers.follower_id', $user->id)
            ->latest()
            ->cursorPaginate(8);

@mehranmarandi90

رضا جهانگیر
رضا جهانگیر
@rezajahangir

تخصص: Full-Stack Developer

سلام.
مدل User و Following هم قرار بدین.

Ali
Ali
@411proplayer

@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');
        });

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

مهران مرندی
مهران مرندی
@mehranmarandi

تخصص: برنامه نویس

یه راه ساده اینه که از روی مدل پست نتیجه رو پیدا کنید

$userIds = $user->following()->pluck('user_id');
$posts=Post::whereIn('user_id',$userIds)->orderBy('created_at','desc')->paginate(6)
parsa parasteh
parsa parasteh
@parsaparasteh

تخصص: Fullstack Developer

سلام
داری نسخه ایرانی میسازی برای اینستا ؟ 😂

فکر کنم که باید این posts رو تو مدل following بزاری ..

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

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