2016-06-25 16 views
0

テーブル& UserActivityというテーブルがあるとします。Laravelは特定の関係データを取得します

各行のフィールドは、id,user_idです。

UserActivityに彼のuserの関係でクエリを実行すると、彼のID、電子メール、および私が必要としないその他のフィールドのuserの情報がすべて取得されます。この関係から必要なものは、ユーザー名フィールドです。私はそれらのすべてを取得するために私の現在のクエリを想定した関係からのみ3-4特定のフィールドを取得できますか

は次のとおりです。

return UserActivity::with('user') 
     ->orderBy('created_at','desc') 
     ->take(5)->get(); 

関係はbelongsToのです。

+0

UserActivityとUserを含むすべてのクエリ、またはこの特定のクエリでのみ、そのユーザー情報を必要としますか? –

+0

UserActivityを含むすべてのクエリは素晴らしいことがあります – TheUnreal

答えて

0

このクエリは、リレーションから 'col1'、 'col2'などの列のみを返します。

return UserActivity::with(['user' => function($q) { 
             $q->select('id','col1', 'col2', ...); 
            }]) 
     ->orderBy('created_at','desc') 
     ->take(5)->get(); 

あなたはそれらの列は、ユーザーオブジェクトがUserActivityからロードされすべてクエリにロードされた列のみであることを確認するには、次のような関係を変更することができ、

function user() 
{ 
    return $this->belongsTo(...)->select(['col1, 'col2', ...]); 
} 
+0

ありがとう、うまくいく - ちょうどそれを明確にするために:ユーザ 'ID'カラムが' $ q-> select'クエリに含まれていなければならない常に「ヌル」になります。 – TheUnreal

+0

あなたは正しいです!ありがとう! idが存在しない場合、結合は失敗します。 –

0
return UserActivity::with(['user' => function ($query) {$query->select('name', 'email')}]) 
    ->orderBy('created_at','desc') 
    ->take(5)->get(); 
関連する問題