علیرضا
3 سال پیش توسط علیرضا مطرح شد
3 پاسخ

یک سوال در مورد روابط در لاراول

وقت بخیر ⚘
من می خوام از طریق مدل Follow به مدل User برسم یعنی از طریق روابط .
مشکل اینه که نمی دونم دقیق داخل مدل Follow چی باید بنویسم؟
و اینکه کلید خارجی من یعنی followerid و followingid جفتشون به جدول users متصله این یک مقدار منو گیج کرده.

 public function up()
    {
        Schema::create('follows', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('follower_id');
            $table->foreign('follower_id')->references('id')->on('users')->onDelete('cascade');
            $table->unsignedBigInteger('following_id');
            $table->foreign('following_id')->references('id')->on('users')->onDelete('cascade');
            $table->unique(['follower_id','following_id']);
            $table->timestamps();
        });
    }

ثبت پرسش جدید
محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

سلام دوست عزیز
خیلی سخت گیرانه به موضوع نگاه نکن
موضوع ساده ایه اما اگر خیلی با روابط اشنا نیستی پیشنهاد میکنم دوره های مربوطه رو ببینی
درک کلید خارجی اگر نداری پایگاه داده دوره داره توی همین سایت .

موضوع به این شکله
شما یک دنبال کننده و یک دنبال شونده داری
دنبال کننده ها یک user هستن از نظر جنس
و دنبال شونده ها هم یک user

حالا شما فرض بگیر توی این جدول ثبت شده چه کسی چه کسی رو دنبال کرده

مثلا من شما رو دنبال کردم
شما هم من رو دنبال کردی
دو رکورد ثبت میشه توی این جدول درست؟
حالا شما با یه سرچ ساده میتونی بفهمی من کیا رو دنبال کردم و کیا منو
فقط با ایدی من user
فقط بحث رابطه ایه که توی model user مینویسی که به followers ارجاع میدی و میگی چه فیلدی مد نظرته
چون جدول یکیه اما فیلد مد نظر یکبار follower_id هست یکبار following_id
کلیت رو درک کن اول ک گیج نشی
من واضح توضیح دادم اما نیاز هست که یکمی شناخت روی روابط کلید خارجی داشته باشی


علیرضا
تخصص : در حال یادگیری لاراول
@alirezamoghadam3180 3 سال پیش مطرح شد
0

@salar.mohammad2013 مهندس عزیز خیلی ممنون از وقتی که گذاشتی و پاسخ ثبت کردی🙏
من تقریبا متوجه کلید خارجی هستم اما تاحالا به این گونه بر نخورده بودم که داخل یک مایگریشن هم زمان دو کلید خارجی که مرجعشم یکی باشه بر بخورم. این کنترلر مربوط به صفحه شخصی کاربر هست که من می خوام وقتی کاربر روی دکمه دنبال کننده ها و شوندگان زد نمایش بده.

  public function User(User $user)
    {
      $follow=Follow::where('following_id',$user->id)->pluck('follower_id')->all();
      $oo=User::where('id',$follow)->get();
      dd($oo);

        return view('user-profile.user-profile', compact('user','follow'));

    }

 تصویر

اینجا follower_id شماره یک من هستم که following_id شماره دو دنبال کردم.


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

شما با روابط در لاراول اشنا هستید؟
با داشتن کاربر $user به شکل زیر راحت میتونی دنبال کننده ها و دنبال شونده ها رو داشته باشی

$user->followers
$user->followings

ببین من ی مثال برات از رابطه ای که داری مثلش میفرستم
جدولی دارم که پدر فرزندی هست
مثل فالور و فالویینگ تو
رابطه ای که میفرستم برات تو شبیهش رو باید توی مدل user بنویسی

    public function parents() {
        return $this->belongsToMany(Product::class, 'foods', 'child_id', 'parent_id')->withPivot('count');
    }
    public function childs() {
        return $this->belongsToMany(Product::class, 'foods', 'parent_id', 'child_id');
    }

اگر که وقت داری حتما پیشنهاد میکنم دوره پروژه محور راکت ببینی یا راجب روابط لاراول و مدلش یه سرچی داشته باشه برا روابط چند ب چند

اینجا چون نام جدول و نام کلید خارجی و کلید اصلی استاندارد نبوده نوشته شده
و تازه اینجا جدول ب خودش اشاره کرده
یک چیزی شبیه نمودار درختی هست این
من پدری دارم و فرزندی دارم از جنس خودم
رابطه به خود جدول ارجاع داده میشه با مشخص شدن کلید اصلی و فرعی
اینجا مدل product من همون user شماست و food جدول followers شما که یه محصول با خودش رابطه داشته مثل کاربر با کاربر شما دقیقا

پدر فرزندی هم همون فالور و فالویینگ شماست
از روش میتونی تغییرات رو راحت بدی برای خودت


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

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