Laravel Bootstrapper表链式方法

时间:2013-01-28 21:47:21

标签: twitter-bootstrap laravel

我正在尝试使用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();

2 个答案:

答案 0 :(得分:0)

你无法做$users['id']->roles(),因为这没有意义:你获取一个整数,然后尝试在其上调用一些东西。如果你做$users->roles()会怎样?

答案 1 :(得分:0)

我确信这是学术性的,因为这个问题已经有几个月了,但我想我会回答它以帮助整个社区。

你这样做:

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()是您的模型的关系,那么您必须实际检索正在转换为数组并传递到闭包中的模型。

希望这有帮助!