2014-02-11 9 views
0

Я использую Yii php и имеет проблемы с поиском записей с массивом первичных ключей.Yii Php: Использование CdbCriteria для поиска записей с первичными ключами

Я знаю, что:

$idArray = array(1,2,3); 
$model = SomeModel::model()->findAllByPk($idArray); 

выше код работает. Но я хочу знать, как это сделать в CdbCriteria, поскольку у меня есть другие условия для добавления, которые я не могу сделать в типичных методах find().

Как выполнить поиск записей с первичными ключами в CdbCriteria?

-------------- Отредактировано ---------------------------

Мне нужно создать CActiveDataProvider с использованием модели, которую я получил.

return new CActiveDataProvider($model,array(
      'criteria'=>$criteria, 

     )); 

печально выше не работает. Ниже работает.

return new CActiveDataProvider('SomeModel',array(
      'criteria'=>$criteria, 

     )); 
+0

Вы хотите, чтобы все записи с указанным выше идентификационным номером? –

+0

есть. У меня в основном есть массив id (первичные ключи), но мне нужно сделать это в CdbCriteria, потому что у меня все еще есть некоторые условия. Я только хочу получить записи с учетом pks – muffin

+0

ok, Является ли этот массив идентификаторов установленным? означает фиксированный размер или переменную? –

ответ

1

Дан массив
$ IdArray = массив (1,2,3); Вы можете написать вот так.

$dataProvider=new CActiveDataProvider('Mymodel',array(
      'criteria'=>array(
     'condition'=>'id IN ('$idArray[0].',' .$idArray[1].','.$idArray[2].')', 
     'order'=>'id DESC', 
    ), 
1

Попробуйте

$idArray = array(1,2,3); 

$criteria = new CDbCriteria; 
$criteria->condition = "CONDITION_HERE"; 

$model = SomeModel::model()->findAllByPk($idArray , $criteria); 
+0

см. Отредактированный пост. Мне нужны критерии, потому что мне нужно создать CActiveDataProvider с ним – muffin

Смежные вопросы