我正在尝试使用Laravel和引导程序包 - 坦率地说,我不确定这是一个laravel问题还是一个引导程序问题。但是,我正在试图弄清楚如何生成一个包含关系数据的表。
我想要做的是创建一个带有添加列的表,该列显示用户拥有的角色。我的表基于Authority的模型,因此它们都是用户,角色和role_user表的标准。
显然链中的方法让我失望的是'角色'方法,我无法弄清楚如何获得给定用户的角色。表的其余部分按预期工作。
echo Table::striped_open();
echo Table::headers('ID','Name', 'Email', 'Roles');
echo Table::body($users)
->ignore('password', 'created_at', 'updated_at')
->order('id','name','email')
->roles(function($users) {
return $users['id']->roles();
});
echo Table::open();
答案 0 :(得分:0)
你无法做$users['id']->roles()
,因为这没有意义:你获取一个整数,然后尝试在其上调用一些东西。如果你做$users->roles()
会怎样?
答案 1 :(得分:0)
我确信这是学术性的,因为这个问题已经有几个月了,但我想我会回答它以帮助整个社区。 p>
你这样做:
echo Table::striped_open();
echo Table::headers('ID','Name', 'Email', 'Roles');
echo Table::body($users)
->ignore('password', 'created_at', 'updated_at')
->order('id','name','email')
->roles(function($user) {
return User::find($user['id'])->roles();
});
echo Table::open();
你有两个问题。
首先是你试图将$ users对象传递给闭包。你不想这样做,部分是因为你可能遇到变量碰撞问题,部分原因是因为关闭是在每一行渲染上执行的,所以使用单数不会导致任何问题。混乱。
第二个是你假设传递给闭包的$user
参数是模型的一个实例。不是。它是模型属性的一个数组。因此,如果roles()
是您的模型的关系,那么您必须实际检索正在转换为数组并传递到闭包中的模型。
希望这有帮助!