سلام کسی میدونه این ارتباط چجوری میشه
هر user میتونه برای تعداد زیادی post کامنت بزاره
وهر user میتونه برای تعداد زیادی کامنت بازم کامنت بزاره
سلام
یک جدول نظرات داریم که در اون id کاربر و id مقاله رو ثبت میکنی
و در داخل جدول نظرات یک فیلد اضافه میکنیم parentid که با خودش رابطه داره و میتونه null باشه
کد مایگریشن
$table->id();
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->unsignedBigInteger('post_id');
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
$table->boolean('approved')->default(0);
$table->text('comment');
$table->unsignedInteger('parent_id')->default(0);
$table->timestamps();
کد مدل
public function user()
{
return $this->belongsTo(User::class);
}
public function child()
{
return $this->hasMany(Comment::class , 'parent_id' , 'id');
}
شاید پاسخ شما همینجا باشد
سلام چیزی که گفتید درسته ولی من کلا یه سوال همیشه دارم ببیند من میتنونم رابطم رو به اینصورت تعریف کنم که هر user یک رابطه یک به چند داره با comment ها واز طرفی هر comment متعلق به یک user می باشد درسته خب حالا از طرفی کامنت با مثلا post ها و یه قسمت دیگه توی سایت که داریم مثلا article ها با این دوتا رابطه یک به چند مورف داره درسته خب من میتونم روابطم رو اینجوری تعریف کنم یا اینکه بگم هر user تعداد زیادی کامنت برای هر پست میتونه بزاره و از طرفی هر پست تعداد زیادی کامنت توسط user های مختلف قبول میکنه و یک رابطه چند به چند بنویسم سوال من اینه که الان توی بحث کامنت چجوری این رو باید پیاده سازی بکنم ینی روش اول درسته یا روش دوم یا هیچکدوم چجوری ؟
@rezajahangir
ببینید اگر داخل پروژه قسمت های مختلفی دارید که میخواین واسشون به کاربر این اجازه رو بدین که کامنت بذاره، مثلا قسمت course، article و ... رو دارید. راه اشتباه اینه که شما بیای واسه هر قسمت یه جدول رابط تعریف کنی، اما راه صحیح استفاده از Polymorphic Relationships است.
واسه روابط هم میشه: هر post تعداد زیادی comment داره و هر comment فقط متعلق به یک post است.
امیدوارم مفید بوده باشه.
موفق باشید.