0

2 つのテーブルのデータを結合して、ビューに送信できる単一の変数にする方法を見つけようとしています。認証バンドルとして Authority を使用しているため、users、roles、role_user というテーブルをセットアップしています。次のデータを単一の変数に取得したいと考えています。

users テーブルから: id、name、email

ロール テーブルから: name

次の例では、users テーブル内のすべてのユーザー データが返されます。

$users = User::all(); 

しかし、ロール テーブルに格納された関連データを取得できるチェーンを作成したいですか? すべてのユーザーとすべての各ユーザーの役割を一緒にしたい。

また、単一のレコードの関連データを取得するのに役立つ例を見つけることはできますが、関連データを含むテーブル全体を取得するための参照を見つけることができませんでした.

ありがとう。

4

3 に答える 3

1
$users = User::with('roles')->get()

熱心な読み込みはあなたが探しているものです、ドキュメントを読んでください:)

于 2013-03-24T20:15:44.807 に答える
0

次のようなものを使用する必要があります。

$user = User::get();
$roles = Roles::get();

$user .= (object) $roles; //because of that both them are object array and we have to combine them as object array...

ビューにデータを渡すよりも

return View:make('templatefile')//or Redirect to_route whatever
      ->with('user', $user);

しかし、最善の方法はあなたの場合は属しています。ドキュメントを読んでください:

http://laravel.com/docs/database/eloquent#relationships

于 2013-03-26T19:21:54.433 に答える
0

私はあなたが何を求めているのか100%確信が持てません.Eloquentsメソッドと関係を築くべきだと思います. しかし、2 つのモデルから返されたデータをマージするだけの方法を探している場合は、次のようにすることができます。

$users = User::all();
$roles = Roles::all(); 

$array = array_merge($users->toArray(), $roles->toArray());
return Response::json($array);

モデル呼び出しを行って、目的のものを正確に返し、それらをマージすることができます。1 つのモデルが特定の何かを返すようにしたい場合は、そのための関数を作成するだけです。

于 2013-01-30T17:19:41.720 に答える