سلام دوستان
بنظرتون برای پیاده سازی سیستم لایک/دیسلایک، بهتره که مثلا برای جدول پست ها، بیایم دو تا ستون برای اینها بذاریم ؟ یا کلا یه جدول به اسم likes بسازیم و صرفا با user id و post id و یه ستون برای لایک ( که boolean باشه و لایک و دیسلایک بودنش رو مشخص کنه )، این رو پیاده سازی کنیم
اصلا فرقی زیادی میکنند یا نه ؟ ( منظورم best practice و حالا کارایی و ایناس )
دوستان اگر منابع خوبی ( کتاب، کورس، سایت یا ... ) برای طراحی تخصصی دیتابیس (mysql) میشناسید، ممنون میشم معرفی کنید
خب تو میتونی از این کد رو در قسمت import در phpmyadmin قرار بده
CREATE TABLE `likes`. ( `id` INT NOT NULL AUTO_INCREMENT , `like` INT NOT NULL DEFAULT '0' , `ip` INT NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;
و در فیلد اول به صورت اتوماتیک اضافه میشه که بعدا می تونی تعداد رو از روی این محاسبه کنی
در فیلد دوم می تونی عددی بزاری مثلا اگر لایک شد 1 و دیس لایک شد عدد -1 یا 2 رو اینسرت کنی
و در فیلد اخر هم ای پی رو ریموت می کنی که در اخر فقط هر کاربر بتواند یکبار رای بدهد
و بقیه کد ها php هستش
سلام.
میتونید برای لایک جدا و برای dislike جدا جدول ایجاد کنید و با ایجاد رابطه یک به چند با جدول پست مثلا و با استفاده از withCount بیای تعداد لایک هارو بشماری
post::withCount(['likes','dislikes'])->get()
پاسخ سوالتون خیلی بستگی داره به نیازتون. یک وقت هست صرفا به تعداد سرجمع شده لایک و دیس لایک احتیاج دارید. یعنی یک عدد که حاصل جمع لایک ها به شکل مثبت و دیس لایک ها به شکل منفی هست. اینجوری فقط کافیه یک فیلد از نوع integer به جدول پست هاتون بعنوان مثال اضافه کنید و با هر بار لایک یک عدد بهش اضافه بشه (increment) و با هر بار دیسلایک یک واحد ازش کم بشه. (decrement)
یک وقت هست براتون مهمه که بدونید چه کاربری کدوم پست رو لایک یا دیسلایک کرده. اون وقت طبیعتا یک رابطه One-To-Many بینشون برقراره. و میشه بعنوان مثال یک جدول داشت با نام votes با فیلدهای زیر:
- post_id
- user_id
- type
که برای فیلد تایپ میشه 1 بمعنای لایک و -1 بمعنای دیس لایک داشت.
اگر هم نظرسنجیتون جنبه عمومی تر داره و نمیخواید محدود به کاربرهای از پیش ثبت نام کرده باشه، احتمالا بایستی از روش هایی مثل استفاده از IP یا Session استفاده کنید تا جلوی ثبت رایهای تکراری گرفته بشه. ولی منطقش به همین شکل باقی میمونه تقریبا.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟