Как получить массив из id моделей

Готовое решение для задачи получения массива из id последних десяти записей в October CMS при помощи базовых методов и хелперов самой системы.

массив id

  Появилась такая задача: нужно получить массив из id последних 10 записей на сайте написанном на October CMS. Признаюсь что пришлось потратить какое то время для её решения.

Итак, чтобы получить последние 10 записей нам нужно выполнить такой запрос:

$items = Item::orderBy('id', 'desc')->limit(10)->select('id')->get();

Ничего сложного, но коротко поясню что происходит в этом запросе:

  • orderBy('id', 'desc') - сортируем записи по полю id в убывающем порядке (99, 98, 97, ...)
  • limit(10) - берём 10 штук
  • select('id') - в выборку коллекции получаем только поле id
  • get() - выполняем запрос получая все записи по указаным параметрам запроса.

В итоге в переменной $items у нас получается коллекция. Чтобы из коллекции получить массив можем воспользоваться методом toArray(). Вот он в документации тут.

Можем коллекцию преобразовать в массив:

$arr_items = $items->toArray();

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

В хелперах OctoberCMS есть метод array_flatten() который из многомерного сделает плоский массив. Вот он в документации.

 

В итоге весь код по получению массива айдишников последних 10 записей выглядит так:

$items = Item::orderBy('id', 'desc')
			->limit(10)
            ->select('id')
            ->get()
            ->toArray();

$arr_ids = array_flatten($items);

Метод toArray() я прописал сразу в запросе. Так можно делать.

Теперь можно проверить наличие id текущего элемента ($current_id) и если он есть, получить его индекс:

if ( in_array($current_id, $arr_ids) ) {
	$index = array_search($current_id, $arr_ids);
    // код ...
}
Записи по теме
Методы массивов JavaScript
массив Методы массивов в JavaScript и примеры их использования: push, pop, unshift, shift, split, join, slice, splice, reverse, map, filter, reduce, sort, includes ...
Сортировка многомерного массива по значению
Сортировка многомерного массива по значению Решение задачи как отсортировать многомерный массив по значению, чтобы при этом сохранить все ключи элементов массива.
Сортировка числового массива
Сортировка числового массива Как правильно отсортировать массив из чисел в javascript. Готовое решение для сортировки данных в числовых массивах.

 

 

Комментарии 0

*** чтобы писать комментарии.