laravel показывает несколько данных в таблицах данных

Я работаю с пакетом разрешений laravel spatie, и мне нужно показать роль пользователя для каждого пользователя в списках данных. теперь я добавляю таблицы данных addColumn метод:

$items = Admin::orderBy('id','DESC');

return DataTables::of($items)
    ->addColumn('role',function(Admin $admin){

        foreach($admin->getRoleNames() as $v){
            return $v;
        }

    })
    ->toJson(); 

этот код работает и показывает имя роли для каждого пользователя, но если у пользователя есть имя с двумя ролями (несколько ролей), мой код не работает и показывает только имя первой роли. т.е. для пользователя test у меня есть две роли: moderator и editor Но я вижу только модератора.

введите здесь описание изображения

Как я могу показать несколько имен ролей для каждого пользователя в списке данных ?!


person LarakBell    schedule 17.02.2020    source источник


Ответы (2)


public function roles()
{
    return $this->hasMany('App\Role');
}
public function user()
{
    return $this->belongsTo('App\User');
} 

Я думаю, вам следует добавить эти методы в вашу user Модель, а второй - в вашу role Модель.

person Racha Aoun    schedule 17.02.2020

Я нашел это и работаю верно:

return DataTables::of($items)
    ->addColumn('roles',function(Admin $admin){

        return $admin->roles->pluck('name')->toArray();
    })
    ->toJson();
person LarakBell    schedule 17.02.2020