Yii的CMSYii的查詢與錯誤複合唯一鍵
我有表中「類別」,website_id +鏈接一個獨特的複合鍵,Yii的不支持此鍵,所以我寫了我自己的方法
一個網站有很多鏈接,每個鏈接都很獨特; 2個或更多網站可能具有相同的鏈接;因爲鏈接可能不是絕對的;
從一個鏈接數組中,我一次提取一個鏈接,如果類別模式適合,我想存儲url;
preg_match('/\/popular\/(.*?)\/1\.html/ims', $matches_website_url[1], $matches_url);
if(count($matches_url) > 0 &&
$this->avoid_duplicate_category($website['id'], $matches_url[1]))
{
$category = new Category();
$category->website_id = $website['id'];
$category->link = $matches_url[0];
$category->name = $matches_url[1];
$category->urls = 0;
$category->update = time();
$category->save();
}
和方法
private function avoid_duplicate_category($website_id,$link)
{
$query_category = Yii::app()->db->createCommand("select * from `category` where `website_id`='.$website_id.' and `link`='.$link.';");
$results = $query_category->queryAll();
if(count($results)>0)return false;
else return true;
}
和錯誤返回:
CDbException
CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'Cute' for key 'name'. The SQL statement executed was: INSERT INTO `category` (`website_id`, `link`, `name`, `urls`, `update`) VALUES (:yp0, :yp1, :yp2, :yp3, :yp4)
這不是PK,是聯合國神遊關鍵;我認爲我可以重命名該方法,並且yii會接受它;我希望;等到我嘗試; –
public function rules(){ //注意:您只應該定義那些 //將接收用戶輸入的屬性的規則。 return array( ... array('website_id,link','primaryKey'), ... ); } public function primaryKey(){ return array('website_id','link'); } –
不工作;我不知道如何寫它 –