Вывести все 'findbyattributes' в yii 1.1

У меня есть findByAttributes в yii, и мне было интересно, как вы выводите все данные, которые соответствуют указанным критериям.

У меня есть пример ниже:

Предполагая, что в моей таблице Test у меня есть 3 строки, которые имеют значение 1 в атрибуте test1, тогда у меня есть этот код в моем представлении

$a= Test::model()->findByAttributes(array('test1'=> '1'));
$b= $a-> id;
print_r($b);

Я заметил, что этот код будет печатать идентификатор «1» вместо «1 2 3».

Какой код я могу использовать, чтобы он выводил ВСЕ идентификаторы с 1 в их атрибуте test1?

извините за вопрос начинающего. Я надеюсь, что кто-нибудь может помочь...


person psycho.velocity    schedule 13.03.2016    source источник


Ответы (2)


Если вы хотите получить все записи, вам нужно использовать метод findAllByAttributes (http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAllByAttributes-detail) вместо findByAttributes. Метод findAllByAttributes вернет все строки, соответствующие требованиям, затем вы должны выполнить итерацию по ним, чтобы получить идентификатор.

Пример,

foreach( $models as $model) { 
    print_r($model->id);
}

Но если вы хотите получить только идентификаторы, лучше использовать CDbCommand и querycolumn.

Yii::app()->db
->createCommand()
->select('id')
->from('Test')
->where('test1=:value', array(':value'=> 1))
->queryColumn()

Он вернет массив идентификаторов

person Evgeny Tupikov    schedule 13.03.2016
comment
Я понимаю. спасибо за ответ... но как мне получить один атрибут... как в примере выше у меня есть $b= $a-> id; не могли бы вы привести пример? - person psycho.velocity; 13.03.2016

Для извлечения всех строк, которые соответствуют определенным критериям, которые вы можете использовать

 findAllByAttributes();

И для получения всего результата вы должны зациклить, например, когда-либо этот результат:

$a= Test::model()->findAllByAttributes(array('test1'=> '1'));

foreach($a as $key => $value)  {

 echo $value->id
}
person scaisEdge    schedule 13.03.2016