Laravel, где NotNull statment не работает должным образом - PullRequest
0 голосов
/ 14 декабря 2018

Я извлекаю данные из БД и, когда делаю это, пытаюсь исключить пустые строки.

public function search(Request $request)
{
    $q = $request->q;

    $estates = \DB::table('allestates')
        ->whereNotNull('lat')
        ->whereNotNull('lng')
        ->where('lat', '!=', '')
        ->where('log', '!=', '')
        ->where(function($query) {
            $query->where("building_name", "LIKE", "%" . $q . "%")
                ->orWhere("address", "LIKE", "%" . $q . "%")
                ->orWhere("company_name", "LIKE", "%" . $q . "%")
                ->orWhere("region", "LIKE", "%" . $q . "%")
        })
        ->orderBy('price')->paginate(8);

    return view("home", compact('estates', 'q'));
}

Я не могу понять, как решить синтаксическую ошибку в этой строке:

   })
   ->orderBy('price')->paginate(8);

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете проверить наличие пустых строк, добавив ->where('lat', '!=', '')->where('log', '!=', '') к вашему запросу.Вам также нужно добавить закрытие, чтобы разорвать ваши операторы OR:

public function search(Request $request)
{
    $q = $request->q;

    $estates = \DB::table('allestates')
        ->whereNotNull('lat')
        ->whereNotNull('lng')
        ->where('lat', '!=', '')
        ->where('lng', '!=', '')
        ->where(function($query) use ($q) {
            $query->where("building_name", "LIKE", "%" . $q . "%")
                ->orWhere("address", "LIKE", "%" . $q . "%")
                ->orWhere("company_name", "LIKE", "%" . $q . "%")
                ->orWhere("region", "LIKE", "%" . $q . "%");
        })

        ->orderBy('price')->paginate(8);

    return view("home", compact('estates', 'q'));

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