为了账号安全,请及时绑定邮箱和手机立即绑定

如何安排时基查询?在拉拉维尔

如何安排时基查询?在拉拉维尔

PHP
小怪兽爱吃肉 2023-09-15 17:44:31
我正在使用此查询来更新状态值public function updateStatus(Request $request){    $customer = Customer::findOrFail($request->user_id);    $customer->status = $request->status;    $customer->new_customer_status = 1;    $customer->save();    return response()->json(['message' => 'User status updated successfully.']);}我希望如果status == 1一周后$customer->new_customer_status应该自动变成NULL如何安排基于时间或天数的查询在一周后或给定时间自动运行?
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

  1. 发出命令php artisan make:command UpdateUserNotNew

  2. 在该类 app/Console/Commands/UpdateUserNotNew.php 中设置命令名称:

    protected $signature = 'cron:update-user-not-new';

    根据处理方法:

public function handle()

{

    Customer::whereDate('created_at', '>', now()->addDays(7)->toDateTimeString())

        ->update([

            'new_customer_status' => null

        ]);

}

在 app/Console/Kernel.php 中的schedule()方法下添加以下行:

protected function schedule(Schedule $schedule)

{

   $schedule->command('cron:update-user-not-new')->daily();  //<--- this line

}

为了使所有这些工作正常,您必须在服务器上启用 crontab,该信息位于 Laravel 文档中:https://laravel.com/docs/7.x/scheduling#introduction


查看完整回答
反对 回复 2023-09-15
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

您必须将查询放入排队作业中。然后,您可以安排该作业在一周后运行。

这是文档中给出的示例,就在这里:https ://laravel.com/docs/7.x/queues#delayed-dispatching

ProcessPodcast::dispatch($podcast)->delay(now()->addMinutes(10));

ProcessPodcast工作等级在哪里。我将让您进一步深入文档以了解如何创建作业,但这确实非常简单明了。当然,就您的情况而言,您可能应该这样做now()->addWeek()而不是now()->addMinutes(10).


查看完整回答
反对 回复 2023-09-15
  • 2 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号