如何从触发器更改的列中获取值

时间:2016-03-28 21:02:49

标签: php mysql laravel laravel-5 eloquent

我在表上有一个插入触发器(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

1 个答案:

答案 0 :(得分:2)

当您调用save时,模型上的当前值将持久保存到数据库,而Laravel ORM不会反映数据库系统所做的更改,除非再次手动提取。

要获取更新的值,您可以使用fresh方法。

$object->fresh()->number;