2013-06-27 1 views
0

YII에서 db에 값을 삽입하는 동안 모든 컨트롤러에 무결성 제약 검사를 추가하는 방법은 무엇입니까? 가장 간단한 방법은 무엇입니까? 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에서 메타 데이터 정보를 검색하기위한 클래스입니다 예를 들어 이러한 제약 조건을 확인하기 위해이 클래스가 제공하는 메서드를 사용할 수 있습니다. findConstraints()