Yii2 activerecord 不返回数据库触发器值

Yii2 activerecord not returning database trigger value

我刚刚了解了YII2框架,我只是创建一个activerecord模型。可以说 Item 和 table 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 不为空且 id return 值。为什么 mycolumn 不像 id 那样显示值?以及如何在 activerecord 函数 save() 之后获取 mycolumn 值?

出于性能原因,Yii 2 不会在保存后自动从数据库中获取属性 - 在大多数情况下它不会改变任何东西,只是创建额外的无用查询。如果您依赖某些数据库触发器,则可能需要在 save().

之后调用 refresh()
$item->save();
$item->refresh();
var_dump($item->attributes);