2017-05-18 10 views
0

私はPlayerとPaymentモデルを持っています。支払いテーブルには「player_id」列があります。 Player + Payment関係の特定の属性を選択したいと思います。言い換えれば、私はこの2つのクエリを組み合わせたいと思う。Laravel ORMと()とselect()メソッドを組み合わせる

1. User::where(/* some condition */)->with('payment')->get(); 
2. User::where(/* some condition */)->select([/* some attributes */])->get(); 

しかし、私は

User::where(/* some condition */)->select([/* some attributes */])->with('payment')->get(); 

をしようとした場合には、モデルの関係の配列が空で返されます。

+0

を動作し、あなたも '支払い*'選択配列に追加しますか。? –

+0

選択肢を 'with'スコープの後ろに追加し、支払い属性のワイルドカードまたは希望のフィールド名をselectに追加してフィールドを取得します。 – Sandeesh

+0

あなたはあなたの 'get(['id'、...])'で選択条件を渡すことができます。 'dd(User :: where()...-> toSql())'で生成されたクエリを出力してください。また、select属性を使用してクエリ全体を出力してください。私はあなたがuser.idを含まないと思うので、クエリが支払の関係をロードすることは不可能です。 – mimo

答えて

0

あなたはこれを試すことができます -

`User::where(/* some condition */)->select([/* some attributes of user */])->with(['payment' => function ($q) { 
    return $q->select(/* some attributes payment */) 
}])->get();` 
+0

同じ結果です。動作しません – Aram810

+0

正しく使用している場合は、この解決方法が有効です。あなたは私に完全なテーブル構造と関係を送り、正確に何を試してもらえますか? –

0

は少しトリッキーなものでなければならが

User::where(/* some condition */)->select([/* some attributes */])->get()->load('payment'); 
+0

これは動作しません。 – Aram810