您可以使用findAllByAttributes
:
$relation_models = Relation::model()->findAllByAttributes(array(
'group_id'=>array('2','3'),
'subject_id'=>array('4','5','7')
)
);
這會給你類似的信息(實際的查詢可能包含化名):
select * from relation where group_id IN (1,3) and subject_id IN (1,4,6,7)
但是,如果你想:where group_id IN (1,3) OR subject_id IN (1,4,6,7)
(即OR代替AND),那麼你將不得不使用CDbCriteria
:
$criteria = new CDbCriteria;
$criteria->condition = 'group_id IN (1,3) OR subject_id IN (1,4,6,7)'
$relation_models = Relation::model()->findAll($criteria);
您還可以使用addInCondition
:
$criteria->addInCondition('group_id', array('1','2'), 'OR');
$criteria->addInCondition('subject_id', array('1','4','6','7'), 'OR');
$relation_models = Relation::model()->findAll($criteria);
記住櫃面參數綁定不過,您正在接受來自用戶的輸入。事情是這樣的:
$criteria->condition = 'group_id IN (:gid1, :gid2) OR subject_id IN (:sid1, :sid2, :sid3, :sid4)';
$criteria->params = array(':gid1'=>$xyz,':gid2'=>'2',':sid1'=>$uvw,':sid2'=>$abc,':sid3'=>'6',':sid4'=>'7');
$relation_models = Relation::model()->findAll($criteria);
請進一步解釋您的數據庫結構幷包含模型的代碼。 – topher
「在2組和3個主題中查找所有內容」 - 您究竟是什麼意思?你能改寫那個嗎?你的意思是像id = 2的組和id = 3的組? –
關係表:id,content_id,group_id和subject_id。也許'標籤'比'subject'好# – Chalist