2012-07-03 65 views
1

我有一個many_many關係在我的任務模型警予many_many分貝的標準過濾太具體

'keywordlist' => array(self::MANY_MANY, 'Keyword', 'task_keyword(id_task, id_keyword)'), 

好讓我的所有任務列表與

$criteria = new CDbCriteria(); 
    $criteria->condition = "t.blocked = 0 AND t.answered = 0 AND t.date_deadline > NOW()"; 
    $criteria->order = 't.id desc'; 

好了,現在任務可以有一個或*關鍵字。如果我把我的任務過濾器

$criteria->addCondition('keywordlist.name like \'%html%\'','AND'); 

我收到想要的任務,但只有html關鍵字。該任務也有更多的其他關鍵字不會出現。 我如何從keywordlist.name列創建類似in_array的東西。如果關鍵字在結果中,則將所有關鍵字返回給我的任務?

如果我使用例如%p%作爲關鍵字搜索,它會顯示更多關鍵字,如果關鍵字由'p'組成的話。但也不會顯示其他關鍵字。

回答

0

如果我理解正確addInCondition()是你在找什麼

$criteria->addInCondition('keywordlist.name',array('html','add','other','keywords','here')); 
+0

我嘗試過addInCondition,但同樣的結果。問題是,任務可能有許多關鍵字,並且每個關鍵字都作爲單個行存儲在task_keyword關係中。所以如果我找到搜索關鍵字'HTML',它不會將所有其他關鍵字返回給我的任務。 –

+0

我需要一個addInconndition但切換。 keywordlist.name應該是數組,第一個參數應該是搜索關鍵字 –

+0

@GarryCat我不明白你在問什麼。如果你想要除搜索以外的任務的所有關鍵字,只需添加另一個關係'allkeywordlist'=>數組(self :: MANY_MANY,'Keyword','task_keyword(id_task,id_keyword)'),並使用allkeywordlist '搜索後 – dInGd0nG