2013-06-27 4 views
0

Как добавить проверку целостности целостности на всех контроллерах при вставке значений в db в YII? для чего это самый простой способ?Как добавить проверку целостности целостности на всех контроллерах в YII?

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()) 
+0

Не уверен, что именно вы пытаетесь достичь - но контроллер не подходит для этого. Вы должны поместить этот вид проверки в модели, возможно, в 'beforeSave()'. –

+0

может быть 'try-catch'? –

+0

@ RuslanPolutsygan.adding попробуйте поймать везде, где вызывается $ model-> save(), кажется довольно трудоемким. Есть ли общее место, где я могу добавить это? – Harikrishnan

ответ

0

CMysqlSchema класс для получения информации о метаданных из базы данных MySQL и COciSchema класса для получения информации о метаданных из database.u Oracle может сделать использование методов предоставляемые этими классами для проверки ограничений, например, u может использовать метод findConstraints()