使用できます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)
(つまり、AND ではなく OR) が必要な場合は、次を使用する必要があります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);