Как сделать конструктор запросов whereIn в Laravel Eloquent с пустым параметром - PullRequest
0 голосов
/ 12 февраля 2019

Я сделал запрос в Laravel Eloquent для поиска в таблице.

public function searchContest($search){
    $category = [];
    $area = [];

    if(isset($search['area'])){
        $area = $search['area'];
    }

    if(isset($search['category'])){
        $category = $search['category'];
    }

    $qry = self::whereIn('area',$area)
                ->whereIn('category', $category)
                ->get();
    var_dump($query);
    return;
}

Но иногда area или category пусто и whereIn не работает с ним.Я не могу найти какие-либо рабочие решения в сети.Как я могу сделать такой запрос?

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

Или вы можете воспользоваться условными предложениями как здесь

DB::table('table_name')
    ->when(!empty($category), function ($query) use ($category) {
          return $query->whereIn('category', $category);
    })
    ->when(!empty($area), function ($query) use ($area) {
          return $query->whereIn('area', $area);
    })
    ->get();
0 голосов
/ 12 февраля 2019
$q = self::query();
if (isset($search['area'])) {
  $q->whereIn('area', $search['area']);
}
if (isset($search['category'])) {
  $q->whereIn('category', $search['category']);
}
$qry = $q->get();
0 голосов
/ 12 февраля 2019

Вы можете использовать область запроса внутри сущности

    public function scopeArea($query, $ids)
    {
        if (! $ids) {
            return ;
        }
        return $query->whereIn('area', $ids);
    }

    public function scopeCategory($query, $ids)
    {
        if (! $ids) {
            return ;
        }
        return $query->whereIn('category', $ids);
    }

Теперь вы можете построить запрос

    $entity
        ->area($area)
        ->category($category)
        ->get();

https://laravel.com/docs/5.7/eloquent#query-scopes

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