Ali
3 سال پیش توسط Ali مطرح شد
5 پاسخ

Chaining Relationship

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

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

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


ثبت پرسش جدید
Ali
@411proplayer 3 سال پیش مطرح شد
0

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

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

@mehranmarandi90


رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 3 سال پیش مطرح شد
0

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


Ali
@411proplayer 3 سال پیش مطرح شد
0

@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 3 سال پیش آپدیت شد
0

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

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

parsa parasteh
تخصص : Fullstack Developer
@parsaparasteh 3 سال پیش مطرح شد
0

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

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


Ali
@411proplayer 3 سال پیش مطرح شد
0

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

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

@mehranmarandi90


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

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