【发布时间】:2016-03-28 21:02:48
【问题描述】:
我在一个表上有一个插入前触发器 (MySQL),它改变了列的值。
但是在执行了应该触发的->save() 之后,如果我执行object->number(数字是在触发器上设置的列)我什么也得不到,而如果我查看数据库编号是设置。
如果在插入过程中也设置了自动增量 id 并且我可以得到它,我不知道为什么会发生这种情况。
感谢您的帮助
$object = new Table();
$object->col1 = 'hello';
$object->save();
echo $object->number;
Number 是之前插入触发器更改的列
这是触发器的代码
CREATE DEFINER=`homestead`@`%` TRIGGER `database`.`Table_BEFORE_INSERT` BEFORE INSERT ON `table` FOR EACH ROW
BEGIN
SET New.number = (SELECT COUNT(*) from `table` where relation_id = New.relation_id);
END
【问题讨论】:
-
让我们看看你的 tigger 代码
-
$model已保存,它会记住该请求的对象状态。之后它不会从 MySQL 重新加载。您需要执行$model->save(); $model = Model::find($id); echo $model->number;才能获得数字的新值。
标签: php mysql laravel laravel-5 eloquent