0

私はLaravelとブートストラップバンドルを使用しようとしています-率直に言って、これがlaravelの質問なのかブートストラップの質問なのかわかりません。ただし、リレーショナル データを使用してテーブルを生成する方法を理解しようとしています。

私がやりたいことは、ユーザーが持つ役割を表示する列を追加したテーブルを作成することです。私のテーブルは Authority のモデルに基づいているため、user、role、および 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();
4

2 に答える 2

0

それは意味がないのでできません$users['id']->roles()。整数をフェッチしてから、それに対して何かを呼び出そうとします。するとどうなりますか$users->roles()

于 2013-01-29T08:46:04.700 に答える
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();

2 つの問題がありました。

1 つ目は、$users オブジェクトをクロージャーに渡そうとしたことです。部分的には変数の衝突の問題に遭遇する可能性があり、部分的にはレンダリングされる各行でそのクロージャーが実行されるため、それをしたくないので、単数形を使用しても混乱は生じません。

$user2 つ目は、クロージャーに渡された引数がモデルのインスタンスであると想定していたことです。そうではありません。モデルのプロパティの配列です。したがって、roles()がモデルの関係である場合、配列に変換されてクロージャーに渡されるモデルを実際に取得する必要があります。

お役に立てれば!

于 2013-05-15T19:57:28.463 に答える