如何在数据表和 laravel 8 的新行中列出用户角色
How can I list user roles in new line in datatables and laravel 8
我正在使用 laravel 8 和数据表,我在我的应用程序中列出了注册用户的数据,一切正常,但我有一个名为角色的列,我想在其中列出所有角色与用户关联的,
我可以通过这种方式获得角色:
enter image description here
但我想要的是这样展示角色:
- 角色 1
- 角色 2
- 角色 3
这是我控制器中的代码
//Getting users with the name of associated roles
$users = User::with('roles')->get();
$users = $users->transform(function($item){
$item->role_names = $item->roles->pluck('name')->implode(' ');
return $item;
})->all();
我正在使用 implode 方法来分离数据,我试过使用它在新行中显示信息,但它不起作用
->implode('<br>');
这就是我在 js 文件中呈现数据表的方式:
"columns" : [
{data : 'id' , className : 'id'},
{data : 'name', className : 'name'},
{data : 'email', className : 'email'},
{data : 'role_names', className : 'roles'},
{data : 'status', className : 'status'},
{data : 'actions', className : 'actions'},
]
有什么想法吗?谢谢。
您不应该使用控制器来修改数据的外观,那是视图的工作。在这种情况下,您可以使用数据表 column.render
function 使用回调函数按照您希望的方式格式化数据,如下所示:
$('#example').dataTable({
"columns" : [
{data : 'id' , className : 'id'},
{data : 'name', className : 'name'},
{data : 'email', className : 'email'},
{data : 'roles', className : 'roles', render: function(data) {
// data is your array of roles, do what you like with it
let names = data.map(x => x.name);
return names.join("<br/>");
}},
{data : 'status', className : 'status'},
{data : 'actions', className : 'actions'},
]
});
我正在使用 laravel 8 和数据表,我在我的应用程序中列出了注册用户的数据,一切正常,但我有一个名为角色的列,我想在其中列出所有角色与用户关联的, 我可以通过这种方式获得角色: enter image description here
但我想要的是这样展示角色:
- 角色 1
- 角色 2
- 角色 3
这是我控制器中的代码
//Getting users with the name of associated roles
$users = User::with('roles')->get();
$users = $users->transform(function($item){
$item->role_names = $item->roles->pluck('name')->implode(' ');
return $item;
})->all();
我正在使用 implode 方法来分离数据,我试过使用它在新行中显示信息,但它不起作用
->implode('<br>');
这就是我在 js 文件中呈现数据表的方式:
"columns" : [
{data : 'id' , className : 'id'},
{data : 'name', className : 'name'},
{data : 'email', className : 'email'},
{data : 'role_names', className : 'roles'},
{data : 'status', className : 'status'},
{data : 'actions', className : 'actions'},
]
有什么想法吗?谢谢。
您不应该使用控制器来修改数据的外观,那是视图的工作。在这种情况下,您可以使用数据表 column.render
function 使用回调函数按照您希望的方式格式化数据,如下所示:
$('#example').dataTable({
"columns" : [
{data : 'id' , className : 'id'},
{data : 'name', className : 'name'},
{data : 'email', className : 'email'},
{data : 'roles', className : 'roles', render: function(data) {
// data is your array of roles, do what you like with it
let names = data.map(x => x.name);
return names.join("<br/>");
}},
{data : 'status', className : 'status'},
{data : 'actions', className : 'actions'},
]
});