Поиск по моделям / активной записи в Yii - PullRequest
1 голос
/ 19 декабря 2011

Если у меня есть что-то вроде:

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

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


Фон:

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

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

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

Ответы [ 3 ]

3 голосов
/ 19 декабря 2011

Полагаю, что простым циклом всех сообщений будет вариант:

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

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

$post=Post::model()->findByPK('pk');
1 голос
/ 19 июня 2012

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

0 голосов
/ 24 января 2012

array_filter ()

http://php.net/manual/en/function.array-filter.php

Комплименты от SJFriedl

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