Laravel Eloquent фильтр записи с запросом - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть отношения: User - Task (BelongsToMany).

Таблица задач:

enter image description here

Таблица Task_user:

enter image description here

Итак, задача № 11 назначена как пользователю № 1, так и № 2

Затем я создаю таблицу для регистрации всех процессов, когда пользователь выполняет задачу. Она называется: appraisals.

Таблица оценки:

enter image description here

Когда задание выполнено, поле 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());

Вот результат:

enter image description here

User #2 имеет только task with id #12. Я ожидаю, что user #2 должно иметь 2 задачи: #12 and #11, поскольку task #11 назначено обоим пользователям #1 and #2, только user #1 завершило задачу, user #2 не имеет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...