2017-07-31 6 views
1

私は3つのテーブルがあります。どのように関係を雄弁な方法で "どこ"句を追加するには?

  • ユーザーを
  • トランザクションヘッダ
  • トランザクションの詳細

とテーブルの関係は次のとおりです。

  • ユーザーがある1 transactionHeader
  • transactionHeade

    $response = User::select(['user_id'])->first(); 
    $response->transactionHeader->transactionDetail->where('trans_detail_id', '=', '1'); 
    

    上記のコードは、正しいデータを表示:Rユーザー

  • transactionHeaderがtransactionDetail
  • transactionDetailへの多くは、ユーザー

に属している、今私はこの方法でアクセスする必要がありますに属していますは、->where('trans_detail_id', '=', '1');でフィルタリングできません。 trans_detail_idは内部にトランザクション詳細テーブルです。エラーはありませんが、私の問題はなぜデータがtrans_detail_id='1'でフィルタリングされていないのですか?

私のコードを修正して理由を説明してください。

+0

どのフレームワークを使用していますか? –

+0

Laravel Framework 5.1 – Patrick

+0

@SagarGautam [タイトルの強制]を避ける(https://stackoverflow.com/help/tagging) – jkucharovic

答えて

2

は、ネストされた関係上、クエリとの関係をロードする熱心みましたありがとう!

$response = User::select(['user_id'])->with(['transactionHeader.transactionDetail' => function($query) { 
     $query->where('trans_detail_id', 1); 
}])->first(); 
+0

私はすでにそれを試みているが、別の問題がある。 trans_detail_idを取得する方法 $ response-> transaction_header // result null – Patrick

+0

'$ response-> transactionHeader-> transactionDetail-> first() - > trans_detail_id'を使用して、一般的な変数名の使用を避けてください。この場合、 '$ response'の代わりに' $ user'を使用した方がはるかに記述的です。 – dbr

-1

希望します。

$response->transactionHeader->transactionDetail->where('trans_detail_id', '1'); 
+0

エラーはありませんが、フィルターが機能しません – Patrick

+0

これはあなたの質問とまったく同じです。 – dbr

0

あなたはこのよう試すことができます。

$response = User::select(['user_id'])->first(); 
$response->transactionHeader()->transactionDetail()->where('trans_detail_id', '=', '1'); 

を、この方法でも動作します:

$response = User::select(['user_id'])->with(['transactionHeader.transactionDetail' => function($query) { 
     $query->where('trans_detail_id', 1); 
}])->first(); 

が、今あなたが 'trans_detail_id' の変数データの代わりに1を使用したいです

$value = $request->value_to_filter_data; 

$response = User::select(['user_id'])->with(['transactionHeader.transactionDetail' => function($query) use ($value) { 
      $query->where('trans_detail_id',$value); 
    }])->first(); 
関連する問題