سلام دوستان گرامی
فرض کنید ما دو تا جدول به نام های users و videos داریم
که تعداد بازدید ویدیوها توسط کاربرو رو میخوام داشته باشیم و
همین طور میخوایم که هر کاربر بتونه ویدیوها رو به علاقه مندیهای خودش اضافه بکنه.
اینجا دو تا جدول واسط برای این کار نیاز است که تعداد بازدیدها و علاقه مندی ها رو ذخیره کنه.
اما مشکل من این است که اسم این متدهای روابط داخل مدل ها رو چی بزارم.
سردرگم شدم.
دو تا جدول میانه هم , هم اسم میشن اما من اسم یکی رو views و دریگری رو favoriets گرفتم و دراخل متد ریلیشن اسم جدولو معرفی میکنم.
اما اسم متدها رو چی بزارم؟ ما برای هر رابطه دو متد در هر مدل داریم و در کل برای این دو رابطه باید چهار متد تعریف کنم اما اسامیشون چی میتونه باشه؟ فعل این روابط ربطی به اسم مدل هاشون نداره که فرضا بگیم یک video میتونه تعدادی تگ داشته باشه پس بیام اسم متودشو tags بزاریم.
اما نام متدی که تعداد بازدید ویدیو رو برامون میاره و بقیه متودها چی میتونه باشه؟؟
سلام
ببخشید من متوجه نشدم، میشه واضع تر توصیح بدید.
تا سریعتر مشکلتون رفع بشه.
@hosseinshirinegad98
سلام.
برای بازدید ویدئوها به نظرم نیاز به جدول اضافه نیست و شما داخل همون جدول videos میتونید یه فیلد به صورت زیر تعریف کنید.
$table->integer('viewCount)->default(0);
پس جداول شما میشه 3 تا: users - videos - bookmark_videos
حالا داخل مدل User باید به این صورت نام گذاری کنید.
public function bookmarks() {
return $this->belongsToMany(Videos::class, 'bookmarks');
}
مدل Video هم باید به صورت زیر باشه.
public function user() {
return $this->belongsTo(User::class);
}
public function bookmarks() {
return $this->belongsToMany(Videos::class, 'bookmarks');
}
چیزی که من از سوالتون فهمیدم رو توضیح دادم اگه اشتباه متوجه شدم، بی زحمت یکم دقیق تر و خلاصه تر توضیح بدین تا بهتر بتونم راهنماییتون کنم.
دو تا جدول دارم که یکی برای نگهداری کاربران با نام users بافیلدهای خلاصه شده زیر هستش
id
fullname
mobile
جدول دوم هم برای نگهداری ویدیوها با نام videos هست که ادمین ویدیو آپلود مینماید و چند تا از فیلدهاش به ترتیب زیر هست
id
title
video_path
description
خوب الان من میخوام بازدیدهای یکتای هرکاربر رو با ip اون کاربر ذخیره کنم البته ثبت بازدید یکتا با ip خیلی هم درست نیست ولی فعلا روال کار به همین شکل است که با ip بازدیدهای یکتا محاسبه شود.
الان برای بازدید ویدیوها یه جدول میانه ایجاد کردم با نام views و ارتباط بین دو جدول بالا برای این جدول چند به چند است یعنی هر کاربر میتونه تعدادی ویدیو رو مشاهده کنه و در طرف دیگه هم هر ویدیو میتونه توسط چند کاربر دیده بشه.
فیلدهای این جدولو با موارد زیر پر کردم
user_id
video_id
user_ip
و مورد بعدی این است که میخوام لیست علاقه مندیها رو برای کاربر تشکیل بدم که کاربر بتونه ویدیوهای مورد علاقشو به جدول علاقه مندیها اضافه بکنه. اینجا هم یه ارتباط چند به چند بین جداول برقرار است یعنی هر کاربر میتونه تعدادی ویدیوی علاقه مندی داشته باشه و از طرف دیگه هر ویدیو هم میتونه مورد پسند تعدادی کاربر باشه .
برای این جدول هم فیلدهای زیرو در نظر گرفتم که نام جدول هست favoriets
user_id
video_id
خب ما دو تا مدل داریم به نام های User و Video
class User extends Models {
protected $fillable = ['fullname', 'mobile'];
public function ??() {
return $this->belongsToMany(Video::class, 'views');
}
public function ??() {
return $this->belongsToMany(Video::class, 'favoriets');
}
}
و
class Video extends Models {
protected $fillable = ['title', 'video_path', 'description'];
public function ??() {
return $this->belongsToMany(User::class, 'views');
}
public function ??() {
return $this->belongsToMany(User::class, 'favoriets');
}
}
خوب دوستان حرفم این بود اسم این ریلیشن ها رو چی میتونم بزارم که با معنی هم باشه؟
@rezajahangir
@samanzdev
این روابطی که تعریف کردین اشتباه هست من در پیام قبلی واستون نحوه نام گذاری رو توضیح دادم.
اگر نا مفهموم است بگین تا مجدد بگم
عزیزم جداول من چهارتاست و من برای هر جدولم باید دوتا ریلیشن در دو مدل تعریف کنم که مجموعا میشه 4 ریلیشن.
این کجاش اشتباست.
در ابتدا گفتین شما سه تا جدول دارید و جوابتونو بر اساس اون سه تا جدول عرض کردین ولی من 4 تا جدول دارم.
برای بازدیدها من نیاز دارم تعداد بازدید یونیک رو داشته باشم پس اینم نیاز به جدول داره که میشه دو تا رابطه چند به چند ساده.
من از فیلد view_count نمیخوام استفاده کنم پس چطور کاربرانو شناسایی کنم تا بازدید مجددشونو محدود کنم.
پس میشه 4 تا جدول.
اگاه از فیلد view_count استفاده کنم با رفرش مجدد تعداد بازدید مرتب افزایش پیدا میکنه و این مد نظرم نیست؟
حالا اگه جوابی دارید بفرمایید.
@rezajahangir
class User extends Models {
protected $fillable = ['fullname', 'mobile'];
public function videoViews() {
return $this->belongsToMany(Video::class, 'views');
}
public function videoFavoriets() {
return $this->belongsToMany(Video::class, 'favoriets');
}
}
class Video extends Models {
protected $fillable = ['title', 'video_path', 'description'];
public function userViews() {
return $this->belongsToMany(User::class, 'views');
}
public function userFavoriets() {
return $this->belongsToMany(User::class, 'favoriets');
}
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟