Как добавить условные выражения в запрос красноречивых отношений? - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь создать фильтры, и я просто хочу прикрепить запрос к отношению, используя некоторые условия. Я не хочу помещать их в первый блок кода. Итак, как я могу получить экземпляр запроса, чтобы я мог присоединить новые запросы к существующему отношению?

    $query = Category::query();

    $query->where('category_type', 'xyz')
        ->with(['products' => function ($query) {
            $query->where('condition1', 'value')
                ->where('condition2', 'value');
        }]);


    if (isset($queryParams['param1'])) {
        $query->with(['products' => function ($query) use ($queryParams) {
            $query->getQuery()->where('type', $queryParams['param1']);
        }]);
    }

В настоящее время просто перезаписывается первое условие отношения запроса.

1 Ответ

1 голос
/ 25 октября 2019

Это должно работать:

$query = Category::query();

$query->where('category_type', 'xyz')
->with(['products' => function ($query) use ($queryParams) {
    $query->where('condition1', 'value')
    ->where('condition2', 'value');
    if (isset($queryParams['param1'])) {
        $query->where('type', $queryParams['param1']);
    }
}]);
...