Laravel: поиск по той же таблице, если доступен запрос на поиск - PullRequest
0 голосов
/ 08 июня 2018

У меня есть простой запрос, чтобы получить сообщение, и он возвращает все сообщения. Я реализовал поиск по тому же запросу.

Мой запрос для получения всех данных:

  $userPostDetails    = Post::with(['product','postattribute.attribute.category','user.userDetails'])
                                ->offset($offset)
                                ->limit($limit)
                                ->whereStatus("Active")
                                ->whereIn('product_id', $userApprovalProductIDs)
                                ->whereIn('status', $demand_or_supply) 
                                ->orderBy('id','desc');

                            if($title) {
                                $userPostDetails->whereHas('product', function ($query) use ($title) {
                                    $query->where('title','=', $title);
                                });
                            }
$userPostDetails->get();

Поиск завершенДанные, какие условия применяются на product таблицы.Но если я хочу выполнить поиск в той же таблице, которая является таблицей posts, как я могу сделать это отдельно, например $title, поэтому всякий раз, когда я получаю данные в $search, этот отдельный запрос выполняется.Как я могу это сделать?

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете использовать оператор when, документация здесь , когда он проверяет, является ли переменная пустой или нулевой, и если она существует, она выполнит обратный вызов и добавит условие запроса:

->when($demand_or_supply, function($query) use ($demand_or_supply) { 
    $query->whereIn('status', $demand_or_suppl);
})
->orderBy('id','desc')
->when($title, function ($query) use ($title) {
    $query->whereHas('product', function ($query) use ($title) {
        $query->where('title','=', $title);
    });
})
->get();

РЕДАКТИРОВАТЬ:

Или вы можете использовать значение по умолчанию, например:

->whereIn('status', $demand_or_supply ? $demand_or_supply : 'default')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...