Laravel 4 で熱心な読み込みを使用する場合、次を使用して関係を読み込むことができます。
$user = User::with('role')->find(1);
これはユーザーの表現を返し、次の方法でロールの表現にアクセスできます
$user->roles();
where を使用して熱心な読み込みをフィルタリングすることもできます
$user = User::with(array('role' => function($query) {
$query->where('name', 'like', '%key%');
}))->find(1);
ロール名フィールドに が含まれている場合にのみロールが入力されたユーザー表現を返しますkey
。
制約を追加することで、ユーザーの表現で返されるフィールドを制限できselect()
ます。
$user = User::with(array('role' => function($query) {
$query->where('name', 'like', '%key%');
}))->select('email')->find(1);
これは、ユーザー表現のフィールドとロール表現のすべてのフィールドemail
のみを返します。id
リレーションシップで返されるフィールドを(APIで使用するために)制限できることを望んでいましたが、方法が見つからないようです。以下の2つの方法を試しました。
$user = User::with(array('role' => function($query) {
$query->select('name');
}))->find(1);
と
$user = User::with('role')->select('role.name')->find(1);