سلام وقت بخیر
میخوام برای کاربران مثل قسمت اعلانات راکت ، نوتیفیکیشن ایجاد کنم و تعداد پیام های خوانده نشده رو نشون بدم.
مثلا فرض کنین یه جدول پیام ها داریم که هر موقع پیام جدیدی از طرف مدیریت برای کاربران فرستاده شد و کاربر اپلیکیشن رو باز کرد عدد یک نشون داده بشه، یعنی یه پیام خوانده نشده داره
چیزی که به ذهن من رسید این بود که یه جدول در نظر بگیریم با این مقادیر
message_id = 1
users_id = 1-2-3-
توضیح : یعنی یه پیام درج شده تو جدول messages با آیدی 1 و توی جدول بالا کاربران با آیدی های 1و2و3 این پیام رو خوندن
اگه کاربری با آیدی 4 این پیام رو خوند فیلد users_id اینجوری میشه
users_id = 1-2-3-4-
موقعی که کاربر اپ رو باز کرد با تابع explode میفهمیم که آیدیش تو این فیلد هست یا نه، و اگه بود یعنی پیام رو خونده
آیا این راه درسته؟ یا راه بهتری هم هست؟
ممنون میشم تجربیات خودتون رو در این زمینه (اعلانات و...) به من بگین 🌹
سلام
من فرد با تجربه ای نیستم و کلا یک ساله که دارم کار میکنم .
اما خودم تو دو تا پروژه که توش اعلانات داشت اینجوری پیاده سازی کردم (نمیدونم روش صحیح هست یا خیر) :
جدول ستون های زیر رو باید داشته باشه :
id
message_id : نوع پیام رو مشخص میکنه (مثلا اگر 5 باشد پیامی است که برای پاسخ داده شدن نظر است)
user_id : این پیام برای چه کاربری ارسال شده است .
read : اگر برابر با true یعنی خوانده شده و اگر نباشد یعنی خوانده نشده
نیازی به انجام اینکارها نیست..تیبل اعلانات لاراول که با دستور زیر ایجاد میشه یه فیلد با نام read_at
داره.
php artisan notifications:table
این فیلد که بصورت timestamp
هستش زمان خوانده شدن رو ثبت میکنه (که میتونید ببینید چه زمانی این اعلان رو خونده) و در صورتی که مقدارش خالی باشه یعنی کاربر این اعلان رو مشاهده نکرده. (البته بصورت خودکار نیست این مورد و شما باید طبق مستندات وضعیت اعلان رو تغییر بدید)
به عنوان مثال کاربر به صفحه اعلانات میاد طبق کد زیر اعلانات خوانده نشده دریافت میشه و وضعیتشون به خوانده شده تغییر میکنه
$user = App\Models\User::find(1);
foreach ($user->unreadNotifications as $notification) {
$notification->markAsRead();
}
برای مشاهده مستندات کامل این لینک رو مشاهده کنید.
(روی مایگریشن هم میتونید تغییرات خودتون رو اعمال کنید برای مثال یه فیلد برای مشخص کردن نوع اعلان تعریف کنید)
@delshad
راست می گویند !!!
چرا بی خود خودتون رو اذیت کنید ، بهتره از طریق notifications خود لاراول استفاده کنید . تازه این وجود میتوانید اعلانات را از طریق ایمیل هم اطلاع رسانی کنید .
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟