Код: Выделить всё
select * from lime_group_l10ns where gid in (232, 234);
< /code>
Это дает: < /p>
+------+-----+----------------------+--------------+----------+
| id | gid | group_name | description | language |
+------+-----+----------------------+--------------+----------+
| 1340 | 232 | abc Q927 def | ghi Q926 jkl | en |
| 1342 | 234 | Question group three | | en |
+------+-----+----------------------+--------------+----------+
2 rows in set (0.00 sec)
< /code>
Пока все хорошо. Теперь я написал это: < /p>
$groups = QuestionGroupL10n::model()->findAll("gid in (232, 234)");
foreach ($groups as $group) {
echo $group->gid . "
";
}
< /code>
, который является эквивалентом данного запроса, который я дал, и я ожидаю, что он выведет < /p>
232
234
< /code>
Но это только отображает < /p>
234
< /code>
Таким образом, он, кажется, учитывает только последний элемент и пропускает тот, который до него до него. Я решил эту проблему через < /p>
$fields = ['description', 'group_name'];
foreach ($gids as $gid) {
if ($gid != 0) {
$group = QuestionGroupl10n::model()->find("gid=" . $gid);
if ($this->fixText($group, $fields, $names) || $this->fixText($group, $fields, $additionalNames)) {
$group->save();
}
}
}
< /code>
, где я зацикливаю идентификаторы группы, ранее рассчитанные, и делаю некоторые изменения, если это необходимо. Это работает. Но он выполняет индивидуальный запрос на каждую группу, которая не выглядит хорошо. Как я могу заставить YII1 Orm Findall Подробнее здесь: https://stackoverflow.com/questions/797 ... om-the-set