فیلد های created_at و updated_at در مدل ها در واقع Instance هایی از کتابخونه Carbon هستند و اگر مقادیر اونها رو var_dump کنید میبینید که در واقع یه شئ رو براتون برمیگردونه که خیلی جا ها هم مفید هست.
کاری که میتونید انجام بدید اینه:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Coupon extends Model
{
protected $dates = [
'seen_at',
];
}
به این ترتیب نیازی نیست فیلدی رو هم آپدیت کنید .. موقعی که خواستید چک کنید آیا این کوپن فعال هست یا نه .. زمان حال رو با فیلد expires_at این مدل مقایسه میکنید.
مهندس جان من یه فیلد is_expire دارم که نشون میده یه کد تخفیفی هنوز فعاله یا نه حالا میخوام سر تاریخی که در فیلد expire_date مشخص میکنم is_expire مقدارش یک بشه یعنی غیرفعال
حالا راهنمایی کنید ممنون
سلام.
برای اینکار میتونین از کرون جاب استفاده کنین به این صورت که مثلا توی پایان هر روز اون کرون جاب بیاد و تخفیف هایی که تاریخ انقضاشون رد شده رو غیرفعال کنه.
با زمانبدی خود لاراول (scheduling) میتونم انجام بدم ؟
فرق زمانبندی در لاراول با کرن جاب چیه؟
schedule یک متد هستش و برای اجرا کردنش یا باید دستور زیر رو بزنید یا براش کرون جاب بنویسید در فلان تایم این کد زیر رو اجرا کنه
php artisan schedule:run
protected function schedule(Schedule $schedule)
{
$schedule->command('registered:users')
->everyMinute();
}
اگر آموزشش رو خواستی تویی همین اسایت در قسمت مقالات سایت میتونی بخونی و کار کنی
https://roocket.ir/articles/scheduled-tasks-in-laravel-shared-hosting
ببینید میشه از زمان بندی ها هم استفاده کرد اما این روش کمی ممکنه عجیب به نظر برسه.
در واقع شما نیاز به یه متد دارید که بررسی کنه که آیا این کوپن هنوز فعال هست یا نه.
به جای اتکا به فیلد is_expire در دیتابیس... میتونید یه متد مثلا isExpired تعریف کنید.
و کاری که این متد انجام میده یه مقایسه ساده است..
مثلا
function isExpired($coupon) {
if ($copoun->expire_date > Carbon::now()) {
return true;
}
}
البته مسلما این تابع در سناریوی واقعی، کمی پیچیده تر هست..
اگر هم به هر دلیلی لازم دارید از فیلد is_expire در دیتابیس استفاده کنید. دوستان روش های scheduling رو توضیح دادند. یه کرون جاب میسازید که مثلا هر ۲۴ ساعت کوپن هایی که تاریخشون میگذره رو به حالت غیرفعال دربیاره.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟