Но мой код извлекает все жизненно важные показатели, проверенные для всех пациентов, и усредняет их с учетом всех посещений всех пациентов, а это не то, что мне нужно. .
Код: Выделить всё
$averageFVRTime = DB::table('visits')
->selectRaw('AVG(TIME_TO_SEC(TIMEDIFF(vital_signs.created_at, visits.created_at))) AS averageFVRTime')
->leftJoin('vital_signs', 'visits.id', 'vital_signs.visit_id')
->oldest('vital_signs.created_at')
->whereBetween('visits.created_at', [$shiftPerformance->shift_start, $shiftPerformance->shift_end])
->get()
->first()?->averageFVRTime;
производительность.
Но мой код извлекает все жизненно важные показатели, проверенные для всех пациентов, и усредняет их по всем посещениям. для всех пациентов, а это не то, чего я хочу.
Код: Выделить всё
$averageFVRTime = DB::table('visits')
->selectRaw('AVG(TIME_TO_SEC(TIMEDIFF(MIN(vital_signs.created_at), visits.created_at))) AS averageFVRTime')
->leftJoin('vital_signs', 'visits.id', 'vital_signs.visit_id')
->oldest('vital_signs.created_at')
->whereBetween('visits.created_at', [$shiftPerformance->shift_start, $shiftPerformance->shift_end])
->get()
->first()?->averageFVRTime;
Я пробовал
Код: Выделить всё
$averageFVRTime = DB::table('visits')
->selectRaw('AVG(TIME_TO_SEC(TIMEDIFF(vital_signs.created_at, visits.created_at))) AS averageFVRTime')
->leftJoin('vital_signs', 'visits.id', 'vital_signs.visit_id')
->oldest('vital_signs.created_at')
->whereBetween('visits.created_at', [$shiftPerformance->shift_start, $shiftPerformance->shift_end])
->havingRaw(MIN(vitl_signs.created_at)
->get()
->first()?->averageFVRTime;
Есть идеи, как я могу сделать это с помощью построителя запросов Laravel?< /п>
Подробнее здесь: https://stackoverflow.com/questions/785 ... ne-to-many