我有一张桌子'用户'。在该表中,有一个字段余额,其数据类型为 ENUM('是',' No')。现在我想创建一个触发器,当天平设置为"是" 时触发。另外,我想在30天后将Balance的值重置为 NO 。
我正在使用 PHP Codeigniter 。我有一个拥有自己用户的经销商表。所以每个经销商都有一些用户。
因此,当经销商将用户余额设置为是时,触发器应该是 被解雇,30天后应将用户余额设置为NO
每个用户的余额也应该唯一重置。我的意思是今天使用的余额设置为是,明天将用户二余额设置为是。那么如何触发知道何时为每个特定用户开火?
答案 0 :(得分:2)
我的解决方案是
updatedon
。balance
为30天而updatedon
为balance
时(根据您的评论),编写存储过程以将YES
设置为NO 答案 1 :(得分:2)
为了跟踪日期,您需要在哪个用户updated_to_yes_date
上保留一列。当用户将枚举列更新为“是”时,您应将当前日期设置为updated_to_yes_date
。
现在让我们为控制器编写cron作业代码。
class Cronjob extends CI_Controller {
function index() {
// Get Date before 30 days.
$today = new DateTime();
$dateBefore30days = $today->modify('-30 days');
$this->db->update('users',array('enumcolumn'=>'No'), array('enumcolumn'=>'Yes', 'updated_to_yes_date'=>date_format($dateBefore30days , 'Y-m-d'));
}
}
我没有测试过上面的控制器,但它会帮助你。
现在是时候设置cron作业了。你需要每天运行这个cron作业。要了解如何在cPanel CLICK HERE
上设置cron作业现在我们需要从命令行执行controller方法。为此,请转到codeignitor Running via the CLI文档。
在我们的案例中,它将像
$ php index.php cronjob index
在许多情况下,我们需要提供index.php的完整路径,如
$ php /path/to/webroot/index.php cronjob index