Я выполняю следующий запрос с отношением with()
.
$logbook_objectives = self::whereIn('lobjective_id', $logbook_objectives_ids)
->with(['objective' => function($q) use ($course_objective_ids){
$q->select(['objective_id', 'objective_code', 'objective_name'])
->whereIn('objective_id', $course_objective_ids)
->whereIn('objective_parent', $course_objective_ids, 'or');
}])
->withCount(['entryObjectives' => function ($q) use ($learner_id) {
$q->where('created_by', $learner_id);
}])
->get();
Иногда возвращаемое поле 'target' является пустым из-за правил в функции with
.Как удалить результаты, которые имеют objective
= null
?
Я пытался использовать ->whereHas('objective')
до ->get()
, но это ничего не меняет.Есть ли другой способ оценки, если функция with
вернула ноль, сохраняя тот же запрос?
Решения, которые у меня на голове:
- Вместо этого используйте объединение, чтобы я мог оценивать нулевые результаты в одном и том же запросе.
- Используйте внешний вид foreach, проверяющий, если
objective
поле пустое и удалить найденные результаты из моего возвращенного списка.