VerbAlexVlad
@VerbAlexVlad
Программист-любитель

Как вывести модель с группировкой по одному полю?

Есть таблица "param"

| id | param_id | value |
| 1 | 50 | Название 1 |
| 2 | 50 | Название 2 |
| 3 | 50 | Название 3 |
| 4 | 555 | Название 4 |
| 5 | 555 | Название 5 |
| 6 | 555 | Название 6 |

Команда
Param::find()->asArray()->all();
выводит
Array
(
    [0] => Array
        (
            [id] => 1
            [param_id] => 50
            [value] => Название 1
        )
    [1] => Array
        (
            [id] => 2
            [param_id] => 50
            [value] => Название 2
        )
    [2] => Array
        (
            [id] => 3
            [param_id] => 50
            [value] => Название 3
        )
    [3] => Array
        (
            [id] => 4
            [param_id] => 555
            [value] => Название 4
        )
    [4] => Array
        (
            [id] => 5
            [param_id] => 555
            [value] => Название 5
        )
    [5] => Array
        (
            [id] => 6
            [param_id] => 555
            [value] => Название 6
        )
)

Как мне сгруппировать массив по полю "param_id"? Чтобы на выходе получить массив
Array
(
	[55] => Array
		(
			[0] => Array
				(
					[id] => 1
					[param_id] => 50
					[value] => Название 1
				)
			[1] => Array
				(
					[id] => 2
					[param_id] => 50
					[value] => Название 2
				)
			[2] => Array
				(
					[id] => 3
					[param_id] => 50
					[value] => Название 3
				)
			
		)
		
	[555] => Array
		(
			[0] => Array
				(
					[id] => 4
					[param_id] => 555
					[value] => Название 4
				)
			[1] => Array
				(
					[id] => 5
					[param_id] => 555
					[value] => Название 5
				)
			[2] => Array
				(
					[id] => 6
					[param_id] => 555
					[value] => Название 6
				)
		)		
)

Пробовал
Param::find()->groupBy('param_id')->asArray()->all();

не работает...

Можно конечно через foreach, но может есть другой способ?
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Arassir
Программист PHP/JS
https://www.yiiframework.com/doc/guide/2.0/en/help...

$result = ArrayHelper::index($array, null, 'param_id');
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы