MySQL Query, где столбец является конкретным значением или любым значением - PullRequest
0 голосов
/ 12 сентября 2018

Не конкретно вопрос Laravel, но я использую Laravel Query Builder. У меня есть столбец базы данных MySQL, который содержит любой из длинного списка состояний. При фильтрации списка я просто передаю статус или статусы в виде массива в запрос ...

$statusArray = ['active','inProgress'];

DB::table('mytable')->whereIn('status', $statusArray)->get();

Однако, когда нет фильтрации, я хочу вернуть все статусы, поэтому я бы хотел что-то вроде ...

 $statusArray = [*];

Есть ли простой способ справиться с этим или мне нужно динамически построить предложение whereIn для запроса?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Когда вы хотите увидеть статус перкукуляра, добавьте их в $ statusArray

$statusArray = ['active','inProgress'];

А когда вы хотите получить все статусы, объявите $statusArray как пустой массив

$statusArray = array();

Затем добавьтесостояние в красноречивом, как показано ниже

DB::table('mytable')->when(!empty($statusArray), function($q, $statusArray) {
   return $q->whereIn('status', $statusArray);
})->get();
0 голосов
/ 12 сентября 2018

Yo может использовать условное предложение «когда».Это поможет вам добавить дополнительные условия к вашему запросу, когда условие выполнено, и пропустить условия, если оно не выполнено.(в вашем случае, когда фильтр должен применяться

См. здесь: https://laravel.com/docs/5.7/queries#conditional-clauses

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