【问题标题】:How to add integrity constraint check on all controllers in YII?如何在 YII 中的所有控制器上添加完整性约束检查?
【发布时间】:2013-06-27 05:54:58
【问题描述】:

如何在 YII 中向 db 插入值时在所有控制器上添加完整性约束检查?最简单的方法是什么?

if($model->save())
                $this->redirect(array('view','id'=>$model->id));

此处出现异常

CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '9-5' for key 'xyz'. The SQL statement executed was: INSERT INTO `tbl_table` (`xyz`, `x`, `x`, `x`, `x`, `x`, `x`, `created`) VALUES (:yp0, :yp1, :yp2, :yp3, :yp4, :yp5, :yp6, NOW())

【问题讨论】:

  • 不确定,您究竟想达到什么目的 - 但控制器是错误的地方。您应该将这种检查放入模型中,可能在beforeSave()
  • @RuslanPolutsygan.adding try catch 在调用 $model->save() 的任何地方似乎都非常耗时。有没有常见的地方可以添加这个?

标签: yii-extensions yii yii-events


【解决方案1】:

CMysqlSchema 是用于从 MySQL 数据库中检索元数据信息的类,COciSchema 是用于从 Oracle 数据库中检索元数据信息的类。你可以利用这些类提供的方法来检查约束,例如你可以制作使用方法findConstraints()

【讨论】:

    猜你喜欢
    • 2017-03-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 2016-12-13
    • 2017-01-12
    相关资源
    最近更新 更多