У меня есть отношения: User - Task (BelongsToMany)
.
Таблица задач:
Таблица Task_user:
Итак, задача № 11 назначена как пользователю № 1, так и № 2
Затем я создаю таблицу для регистрации всех процессов, когда пользователь выполняет задачу. Она называется: appraisals
.
Таблица оценки:
Когда задание выполнено, поле percent
установлено на 100
Теперь я хочу получить незавершенные задачи каждого пользователя. Незавершенное задание означает, что задание не имеет никаких оценок, и поле percent
не равно 100.
Вот мой код:
$unfinishedTasks = User::with(['tasks' => function ($query) {
$query->where('end_at', '>=', date('Y-m-d')); // Get unexpired tasks
$query->doesnthave('appraisals'); // Doesn't have any appraisals
$query->orWhereHas('appraisals', function ($query) {
$query->where('percent', '!=', 100); // The percent field is not equal 100.
});
}])->get();
dd($unfinishedTasks->toArray());
Вот результат:
User #2
имеет только task with id #12
. Я ожидаю, что user #2
должно иметь 2 задачи: #12 and #11
, поскольку task #11
назначено обоим пользователям #1 and #2
, только user #1
завершило задачу, user #2
не имеет.