Страница 1 из 1

GridView and ArrayHelper::map одинаковый ключи

Добавлено: 2018.11.10, 11:58
kreativ207
Привет Всем
Нужно сделать фильтр по родительской категории:
Menu::find()->asArray()->all()
Получается массив
[0]=>
array(4) {
["id"]=>
string(1) "2"
["title"]=>
string(14) "Главная"
["link"]=>
string(10) "site/index"
["parent_menu"]=>
string(1) "0"
}
[1]=>
array(4) {
["id"]=>
string(1) "3"
["title"]=>
string(19) "О компании"
["link"]=>
string(10) "site/about"
["parent_menu"]=>
string(1) "0"
}
[2]=>
array(4) {
["id"]=>
string(1) "4"
["title"]=>
string(12) "Услуги"
["link"]=>
string(14) "services/index"
["parent_menu"]=>
string(1) "0"
}
[3]=>
array(4) {
["id"]=>
string(1) "5"
["title"]=>
string(35) "Юридические услуги"
["link"]=>
string(18) "services/juridical"
["parent_menu"]=>
string(1) "3"
}
[4]=>
array(4) {
["id"]=>
string(1) "6"
["title"]=>
string(31) "Оценочные услуги"
["link"]=>
string(18) "services/valuation"
["parent_menu"]=>
string(1) "3"
}
[5]=>
array(4) {
["id"]=>
string(1) "7"
["title"]=>
string(16) "Контакты"
["link"]=>
string(13) "site/contacts"
["parent_menu"]=>
string(1) "0"
}
}

Нужно в GridView вывести в фильтр все (6 из массива выше "parent_menu" => "title"),
делаю так
'filter' => ArrayHelper::map(Menu::find()->asArray()->all(), 'parent_menu', 'title'),
получается только 2
array(2) {
[0]=>
string(16) "Контакты"
[3]=>
string(31) "Оценочные услуги"
}
понимаю что одинаковые ключи и они переписываются, как правильно сделать?

Re: GridView and ArrayHelper::map одинаковый ключи

Добавлено: 2018.11.10, 16:51
Loveorigami
Index By по уникальному полю

Re: GridView and ArrayHelper::map одинаковый ключи

Добавлено: 2018.11.11, 12:53
andku83
вместо этого:

Код: Выделить всё

'filter' => ArrayHelper::map(Menu::find()->asArray()->all(), 'parent_menu', 'title'),
сделать:

Код: Выделить всё

'filter' => Menu::find()->select(['title', 'id'])->indexBy('id')->column(),