【发布时间】:2016-02-11 13:18:15
【问题描述】:
Yii2 问题: 有没有办法在执行保存之前获取当前的insert 查询?例如$model->save()。对于目前的情况,save其实就是在表中插入一行。
我知道执行function beforeSave($insert),但这个 $insert 仅指事件是否有效,并在保存到数据库之前进行额外的计算。
杂项:查找查询可以打印为$FindResultVariable->prepare(Yii::$app->db->queryBuilder)->createCommand()->rawSql; 如果有人也可以朝这个方向思考以寻求解决方案?
谢谢。
【问题讨论】:
-
这样做的目的是什么?是为了调试吗?
-
如果您启用了yii2-debug,您可以单击数据库部分并查看在所选页面上执行的所有查询。您可以使用页面顶部的“最后 10 个”下拉菜单切换页面。
-
我知道调试的东西,它已启用。问题在于特定列上发生了一个奇怪的情况。创建和更新调用相同的函数 - 即使
$this->attributes与 beforeSave() 上的打印值相同。 yii 调试日志上的插入查询具有该列的值。但价值不是为创造而储蓄。 P.S:调试插入打印查询具有该列的值。如果你愿意,我可以分享屏幕截图。 -
检查该字段的长度。如果您将长数据传递到允许存储空间较小的字段,则可能会发生这种情况。例如你有 varchar(50) 字段并且你传递的数据超过 50。也试试 $model->getErrors();模型保存方法后。
标签: yii2 yii2-model