私は、テスト日付(テスト)と各テスト結果(結果)の結果を含むテーブルを持つテーブルを持っています。 まず、特定のアスリート/顧客のすべてのテスト記録を取得します。 次に、これらのテストレコードごとにすべての結果を取得する必要があります。 私はそれをforeachループで動作させることしかできません。 1.クエリを構造化する最適な方法はありますか? 2.ブレードの場合、test_idごとに配列が配列されるように構造化されていますか?ブレードでは、テストデータをヘッダーとして表示し、それぞれの結果を下に表示します。Laravel 5.3 whereInから既存のコレクション - 最適化
サブクエリを使用した以下の最初のオプションは機能しません。 dbテーブルが見つからないエラーを取得:
$athlete_tests = Test::where('athlete_id', $an_athlete->id)->get();
if($athlete_tests){
$results = Result::whereIn('test_id', function($query) use ($an_athlete){
$query->select('test_id')
->from('Test')
->where('athlete_id', $an_athlete->id);
})->get();
}
この1作品 - 最適化されている必要があります
$athlete_tests = Test::where('athlete_id', $an_athlete->id)->get();
if($athlete_tests){
$results = collect([]);
foreach ($athlete_tests as $key => $value) {
$results = $results->merge(Result::where('test_id', $value->id)->get());
}
}
3 http://tackoverflow.com/questions/40458146/l aravel-5-3-whom-returns-unique-resultが助けられましたが、私は最初のコレクションなしで2番目のコレクションを手に入れることはできません。 – louisav