2011-12-19 3 views
1

Если у меня есть что-то вроде:Поиск в модели/активной записи в Yii

$posts = Post::model()->findAll(); 

Как я могу найти в пределах $ сообщения на сообщение от первичного ключа? (В отличие от запуска отдельного запроса к базе данных, так как данные уже загружены)


фона:

Я загрузки данных из внешнего источника, на основе первичного ключа модели. Поэтому я запускаю поиск, чтобы найти все модели, которые нуждаются в обновлении, а затем сделать запрос к внешнему источнику и обновить модели.

Результаты (~ 100) отправляются обратно в виде немеченого массива объектов (одна из переменных в объекте является первичным ключом), поэтому представляется целесообразным повторить этот массив, а затем обновить значения в существующих модель, которую я уже загрузил из базы данных, а затем сохранил каждый элемент.

Я не против использования другого метода, чтобы добиться всего этого, это похоже на самый удобный способ сделать это.

ответ

3

Я думаю, просто пробегаем по всем должностям был бы вариант:

for($posts as $post){ 
     if($post->pk=='pk') 
     //do staff... 
} 

в качестве альтернативы, если это возможно, это prefereable:

$post=Post::model()->findByPK('pk'); 
+0

Я боялся этого: | –

+0

meanging ......? – bingjie2680

+0

Ну, это означает, что мне нужно итерации массива результатов и массива моделей для каждого элемента, в отличие от одного из двух, имеющих существующий индекс. –

1

Немного размытый ответ, но я думаю, что это может быть полезно для вас: есть способ сказать yii, что когда он загружает записи, используя findAll() (как и вы), возвращать массив объектов, используя определенный столбец, как ключ для элементов массива. Обязательно используйте уникальный столбец, иначе вы получите возможность перезаписи элементов массива .... Поиск «индекса» в this link. У меня нет готового образца кода, чтобы дать вам.

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