@akula22

Как в AR вытащить айди в нужном мне порядке?

Есть список ID в определенном порядке, например 2, 3, 1, 5
мне надо получить записи из таблицы в это порядке, делаю
Table::find() ->where(['id' =>$ids])->all();
но получаю записи по порядку возрастания, т.е 1, 2, 3, 5
а мне надо 2,3,1,5

в логе запроса
WHERE `id` IN ('2', '3', '1', '5')
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
kimono
@kimono
Web developer
$items = Table::find()->where(['id' =>[1, 2, 3, 5]])->indexBy('id')->all();
$items = array_replace([2 => null, 3 => null, 1 => null, 5 => null], $items);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Нужно добавить сортировку по полю, по которому записи выстроятся в нужном порядке:
Table::find() ->where(['id' =>$ids])->orderBy(['fieldName' => SORT_ASC|SORT_DESC])->all();

Указав порядок сортировки SORT_ASC или SORT_DESC
По умолчанию сортировка идет по первичному ключу, порядок сортировки "по возрастанию"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы