Yii2 , Rbac, как правильно вывести имя роли d GridVIew

113
08 ноября 2021, 13:30

Я вывожу таблицу, и вывожу в ней также роль пользователя

мой grid widget

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'id',
            'username',
            'email:email',
            'status',
            'created_at',
            [
                'attribute' => 'roles',
                'value' => function ($user){
                    if(!empty($userRole = $user->getRoles()[0])){
                        return $userRole;
                    }
                }
            ],
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>

функция getRoles

public function getRoles(){
        $roles = Yii::$app->authManager->getRolesByUser($this->getId());
        return ArrayHelper::getColumn($roles, 'name', false);
    }

Роль выводиться, но есть проблема. количество запросов в базу данных, зависит от количества пользователей выведенных в таблицу на странице пагинации(к примеру если в таблице выводиться 30 пользователей то соотвецтвенно будет 30 запросов в БД, чтобы получить имя роли). Как можно улучшить это и сократить количество запросов в базу данных?

READ ALSO
Не выводить повторяющиеся значения [MySQL]

Не выводить повторяющиеся значения [MySQL]

В базе данных есть 5 строк, с полем description(описание)В каждой из строк в поле description есть хэштег "#istanbul"

131
Добавление файла PDF в Admin panel

Добавление файла PDF в Admin panel

Как правильно организовать добавление файла PDF в админ панели сайта? Где лучше хранить эти данные — в БД или папке ресурса?

182
Превращение строки в число php [дубликат]

Превращение строки в число php [дубликат]

Возможно ли в php подобную строку "125/10" превратить в 125 без использования функции, explode?

161
Что-то не получается с циклом foreach в теге html

Что-то не получается с циклом foreach в теге html

Вроде все правильно но все равно вылазит ошибка

80