Поиск с помощью Laravel or_where () - PullRequest
0 голосов
/ 11 сентября 2018

Моя цель - найти имя и фамилию, используя Laravel. Когда код написан, он ищет имя или Фамилия, и я хотел бы, чтобы он выполнял поиск по имени и Фамилия. Как мне это сделать?

PHP - оператор поиска

public function search($search_input) {
   $response = DB::table(self::$table)
          ->select(array(
            'ID',
            'User_ID',
            'Signup_Date',
            'First_Name',
            'Last_Name',
             DB::raw('CONCAT(First_Name," ",Last_Name) AS Name')
        ))
        ->where('First_Name', 'LIKE', '%'.$search_input.'%')
        ->or_where('Last_Name', 'LIKE', '%'.$search_input.'%')
        ->where_not_null('User_ID')
        ->order_by('Signup_Date', 'desc')
        ->get();
   return $response;
}

РЕДАКТИРОВАТЬ: Я забыл указать, что мы используем Laravel 3. https://laravel3.veliovgroup.com/docs/database/fluent

Ответы [ 2 ]

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

Как я понимаю, ваше условие запроса:

(First_Name LIKE "%xx%" OR Last_name LIKE "%xx%") AND User_id IS NOT NULL

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

public function search($search_input) {
   $response = DB::table(self::$table)
          ->select(array(
            'ID',
            'User_ID',
            'Signup_Date',
            'First_Name',
            'Last_Name',
             DB::raw('CONCAT(First_Name," ",Last_Name) AS Name')
        ))
        ->where(function($query) use ($search_input) {
             $query->where('First_Name', 'LIKE', '%'.$search_input.'%')
             ->or_where('Last_Name', 'LIKE', '%'.$search_input.'%');
        }
        ->where_not_null('User_ID')
        ->order_by('Signup_Date', 'desc')
        ->get();
   return $response;
}
0 голосов
/ 11 сентября 2018

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

public function search($search_input) {
  $response = DB::table(self::$table)
      ->select(array(
        'ID',
        'User_ID',
        'Signup_Date',
        'First_Name',
        'Last_Name',
         DB::raw('CONCAT(First_Name," ",Last_Name) AS Name')
    ))
    ->where('Name', 'LIKE', '%'.$search_input.'%')
    ->where_not_null('User_ID')
    ->order_by('Signup_Date', 'desc')
    ->get();
   return $response;
}

Это должно работать, потому что Name устанавливается функцией CONCAT.

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