وقت بخیر ⚘
من می خوام از طریق مدل 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();
});
}
سلام دوست عزیز
خیلی سخت گیرانه به موضوع نگاه نکن
موضوع ساده ایه اما اگر خیلی با روابط اشنا نیستی پیشنهاد میکنم دوره های مربوطه رو ببینی
درک کلید خارجی اگر نداری پایگاه داده دوره داره توی همین سایت .
موضوع به این شکله
شما یک دنبال کننده و یک دنبال شونده داری
دنبال کننده ها یک user هستن از نظر جنس
و دنبال شونده ها هم یک user
حالا شما فرض بگیر توی این جدول ثبت شده چه کسی چه کسی رو دنبال کرده
مثلا من شما رو دنبال کردم
شما هم من رو دنبال کردی
دو رکورد ثبت میشه توی این جدول درست؟
حالا شما با یه سرچ ساده میتونی بفهمی من کیا رو دنبال کردم و کیا منو
فقط با ایدی من user
فقط بحث رابطه ایه که توی model user مینویسی که به followers ارجاع میدی و میگی چه فیلدی مد نظرته
چون جدول یکیه اما فیلد مد نظر یکبار follower_id هست یکبار following_id
کلیت رو درک کن اول ک گیج نشی
من واضح توضیح دادم اما نیاز هست که یکمی شناخت روی روابط کلید خارجی داشته باشی
@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 شماره دو دنبال کردم.
شما با روابط در لاراول اشنا هستید؟
با داشتن کاربر $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 شما که یه محصول با خودش رابطه داشته مثل کاربر با کاربر شما دقیقا
پدر فرزندی هم همون فالور و فالویینگ شماست
از روش میتونی تغییرات رو راحت بدی برای خودت
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟