【问题标题】:How to get value from column that was changed by trigger如何从触发器更改的列中获取值
【发布时间】: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


【解决方案1】:

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

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

$object->fresh()->number;

【讨论】:

    猜你喜欢
    • 2013-05-25
    • 2021-09-08
    • 2011-12-09
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    相关资源
    最近更新 更多