Yii2 ActiveRecord未返回数据库触发值

时间:2020-06-07 14:19:17

标签: activerecord yii2 database-trigger

我刚刚了解了YII2框架,我只是创建了一个activerecord模型。让我们说Item,并在表item上添加一个触发器,然后再插入以向字段添加值。我正在尝试像这样测试:

$item = new Item();
$item->name = 'item 1';
$item->save();
die(var_dump('<pre>', $item->attributes));

并触发如下代码:

BEGIN
SET new.mycolumn = store_procedured_function();
END

转储结果是

Array(
  ['id']=>
  int(123)
  ['name']=>
  string(6) "item 1"
  ['mycolumn']=>
  NULL
);

但是当我检查数据库mycolumn时不为null,并且id返回值。为什么mycolumn没有显示类似id的值?以及如何在activerecord函数save()之后获得mycolumn的值?

1 个答案:

答案 0 :(得分:0)

出于性能原因,Yii 2在保存后不会自动从数据库中获取属性-在大多数情况下,它不会更改任何内容,只需创建其他无用的查询即可。如果您依赖某些数据库触发器,则可能需要在save()之后调用refresh()

$item->save();
$item->refresh();
var_dump($item->attributes);