【发布时间】:2017-06-04 16:38:03
【问题描述】:
我有一个包含测试日期(测试)的表格和一个包含每个测试日期的结果(结果)的表格。 我首先获取特定运动员/客户的所有测试记录。 然后我需要获取每个测试记录的所有结果。 我只设法让它与一个 foreach 循环一起工作。 1. 有没有更优化的查询结构方式? 2. 对于刀片,按照 test_id 排列数组是否更有条理?在刀片中,我将测试数据显示为标题以及下面每个结果的结果。
下面带有子查询的第一个选项不起作用。 Get a db table not found 错误:
$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();
}
这个可行 - 必须优化:
$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());
}
}
【问题讨论】:
-
stackoverflow.com/questions/40458146/… 有帮助,但如果没有第一个集合,我就无法获得第二个集合。
标签: php laravel laravel-5 eloquent