@mrSeller

Как получить порядковый номер строки в выборке с Eloquent ORM?

Например, у меня есть база городов с населением.
Мне нужен Челябинск и его место по населению среди городов.

Я получаю города, сортирую их по населению, а как получить его порядковый номер в выборке?

$chelyabinsk_id = 100;
$city = City::where('people', '>', 100000)->orderBy('people')->?
  • Вопрос задан
  • 552 просмотра
Решения вопроса 2
@Yan-s
Получить порядковый номер города по его id:
$chelyabinsk_id = 100;
$сities = City::where('people', '>', 100000)->orderBy('people')->get();
$position = $сities->where('id', $chelyabinsk_id)->keys()->first());

Но возможно будет лучше один раз вычислить позицию и занести ее в бд, чем делать это каждый раз.
Ответ написан
@iljaGolubev
Только MySQL но зато без использования массива.
Для других СУБД есть другие конструкции.
DB::statement(DB::raw('set @row:=0'));
City::where('people', '>', 100000)
    ->orderBy('people')
    ->select(['*',DB::raw('@row:=@row+1 as row')])
    ->find($chelyabinsk_id);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@hakkol
Сделайте из коллекции массив (toArray()), а дальше используйте array_search или array_filter
Ответ написан
Ваш ответ на вопрос

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

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