be_a_dancer
@be_a_dancer
Backend/Fullstack Developer

Вывести список, сортируя по модели?

Всем привет.

Никак не могу сообразить, как без большого количества запросов к базе вывести отсортированные значения в виде
Model
-rule
-rule
-rule
Model#2
-rule


В общем-то я получаю из базы данных (модель Rules (`rule`, `modelNameString`) примерно следующим запросом
Rule::orderBy('model', 'asc')->get();

Пример результата:
[
    {
         'rule' => 'news-create',
         'model' => 'News'
    },
    {
         'rule' => 'news-update',
         'model' => 'News'
    },
    {
         'rule' => 'comment-create',
         'model' => 'Comment'
    }
]


Надо вывести
News
-news-create
-news-update
Comment
-comment-create


Необходимо для того, чтобы вывести список чекбоксов.

Тег PHP, так как сделать это возможно и средствами ванильного PHP, вероятно.
  • Вопрос задан
  • 67 просмотров
Решения вопроса 2
be_a_dancer
@be_a_dancer Автор вопроса
Backend/Fullstack Developer
Решил для тех, кому интересно.
Воспользовался функционалом laravel, но можно сделать и с обычными массивами.

$initial = $model->get();
$transformed = [];

$initial->transform(function ($item, $key) use (&$transformed) {
    if(!isset($transformed[$item->model]){
        $transformed[$item] = collect();
    }

    $transformed->push($item);
});


В случае с обычным PHP достаточно воспользоваться функцией array_map() вместо $collection->transform() и массивами, вместо коллекций.
Ответ написан
Комментировать
@anlamas
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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