【问题标题】:Yii2 get insert query before saving modelYii2 在保存模型之前获取插入查询
【发布时间】: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


【解决方案1】:
$model->insert();

这会在保存之前插入值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    相关资源
    最近更新 更多