2016-11-18 16 views
2

関数 "with"の関係から値を選択できますか? だから、このような何かを作る:Laravel 5.1関数でのフィールドの選択

$test = User::where('id',1)->with(['user_detail' => function($query){ 
      $query->select("detail_1"); 
     }])->get(); 

はい、私は「user_detail」の関係で選択置くことができることを知っているが、私は機能で選択することができますか?

答えて

1

あなたは下記の例作ったとしてあなたはwith以内に選択することができます。

$test = User::where('id',1)->with(['user_detail' => function($query){ 
    $query->select("detail_1"); 
}])->get(); 

しかし、あなたは1つのプロパティだけを選択したが、外部キーは利用できないので(他の回答でコメントしたように)動作しません。あなたのselectステートメントしたがって、関連する外部キーも選択すると、それが機能することを確認してください。あなたのケースでは

は、私は、あなたはまた、例えば、あなたの選択でuser_idを選択するようにしたことを信じている:

だから、
$test = User::where('id',1)->with(['user_detail' => function($query){ 
    $query->select(
     'user_id', // This is required if this key is the foreign key 
     'detail_1' 
    ); 
}])->get(); 

、関係を作るforeign keyせず、Eloquentができなくなります関連するモデルを読み込むと、他のコメントで述べたように結果にnullが表示されます。

+1

うわー、ありがとう!私は外来の鍵を逃した。 – LorenzoBerti

+0

あなたは歓迎です:-) –

0

はい、select()with()に使用できます。ただ、列の配列を渡す:

$query->select(['detail_1', 'detail_2']); 

代わりに、別のリレーションを作成し、それにselect()を追加することができます。

public function userDatails() 
{ 
    return $this->hasMany('App\UserDetail')->select(['detail_1', 'detail_2']); 
} 
+0

2番目の解決策はOKですが、最初の解決策です。 私は働いていません。モデルの "user_detail"フィールドでnullを返します。 – LorenzoBerti

関連する問題