Laravel 迁移:将 stored()(生成的列)与 subtime() MySQL 函数结合使用

Laravel migration: Using storedAs() (generated colum) with subtime() MySQL function

这是我在迁移中的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 开始的事件,但我希望它在开始前 'expire' 30 分钟(或一个小时,或 50 小时 ...)。稍后在我的代码中,我可以使用这个新生成的 expire_at 列来显示或排序。

但是由于某种原因这不起作用,我不断得到 0000-00-00 00:00:00expired_at

+-------+---------------------+----------------+---------------------+
| id    | from                | expire_by_time | expire_at           |
+-------+---------------------+----------------+---------------------+
| 11111 | 2019-09-29 12:00:00 | 00:30:00       | 0000-00-00 00:00:00 |
+-------+---------------------+----------------+---------------------+

我在这里做错了什么?

我不知道如何转义字符。这个:

$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 |
+-------+---------------------+----------------+---------------------+