这是我在迁移中的up()
方法
$table->dateTimeTz('from');
$table->time('expire_by_time')->default('0:30:00');
$expression = 'subtime(\'from\', \'expire_by_time\')';
$table->dateTimeTz('expire_at')->storedAs($expression);
我所拥有的活动始于from
,但我希望它在活动开始前30分钟(或一小时或50小时...)“过期”。稍后在我的代码中,我可以使用这个新生成的expire_at
列进行显示或排序。
但是由于某些原因,该方法不起作用,我不断为0000-00-00 00:00:00
列获取expired_at
+-------+---------------------+----------------+---------------------+
| id | from | expire_by_time | expire_at |
+-------+---------------------+----------------+---------------------+
| 11111 | 2019-09-29 12:00:00 | 00:30:00 | 0000-00-00 00:00:00 |
+-------+---------------------+----------------+---------------------+
我在这里做错什么?
答案 0 :(得分:0)
我不知道如何转义字符。这个:
$expression = 'subtime(\'from\', \'expire_by_time\')';
应该是这样:
$expression = 'subtime(`from`, `expire_by_time`)';
现在我明白了:
+-------+---------------------+----------------+---------------------+
| id | from | expire_by_time | expire_at |
+-------+---------------------+----------------+---------------------+
| 11111 | 2019-09-29 12:00:00 | 00:30:00 | 2019-09-29 11:30:00 |
+-------+---------------------+----------------+---------------------+