我想做一个算法,计算每行有多少个孩子。我有一个可以进行多次检查的汽车模型。我想获得多少辆汽车进行一项考试,多少辆汽车进行多项考试。我下面显示的代码需要21s才能执行,因为我有10k +行。
$cars = Car::get();
$cars->map(function ($item, $key) use (&$recurrent) {
if($item->exam->count()==1)
{
$recurrent['single']++;
}
else
{
$recurrent['multiple']++;
}
});
答案 0 :(得分:0)
使用Eloquent的withCount会更好。例如,假设您在Car模型中有一个关系exams
。
$cars = App\Car::withCount('exams')->get();
foreach ($cars as $car) {
echo $car->exams_count;
}
如果您想让汽车通过一定程度的考试或更多,则可以这样做:
$cars = App\Car::withCount('exams')->get()
->having('exams_count', '>', 5)
->get();
答案 1 :(得分:0)
Thx。为您的答案Mozammil,我已更正您的代码,并将其发布。
$cars = Car::withCount('exam')->get();
$recurrent = array("single" => $cars->where('exam_count', '=', 1)->count(), "multiple" => $cars->where('exam_count', '>', 1)->count());