Как я могу использовать, если условие в Laravel нетерпеливая загрузка? - PullRequest
0 голосов
/ 13 апреля 2020

Я хочу проверить значение поля в красноречивой загрузке следующим образом:

$query->with(['subject' => function($query){
    if('subject.is_free' != 1) {
        $query->with('file');
    }
}]);

Я хочу получить файл только для предметов subject.is_free == 1

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020
$query->whereHas('subject', function($q) {
    $q->where('is_free', true);
})->....

Использование whereHas фильтрует результаты по связи.

0 голосов
/ 13 апреля 2020

Если вы хотите загружать файловое отношение, где субъектное отношение свободно, вы можете использовать метод whereHas().

$query->with(['subject', 'file'])->whereHas('subject', function ($subQuery) {
    $subQuery->where('is_free', 1);
})->get();

Это даст вам все экземпляры вашей модели, у которых есть свободный субъект , с загруженным отношением файла.

Если вы хотите загружать только отношение файла, когда тема свободна, вы должны сделать 2 запроса и объединить их.

$query->with('subject')->whereHas('subject', function ($subQuery) {
    $subQuery->where('is_free', 0);
})->get();

Затем вы можете объединить результаты, используя Laravel collection merge().

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