Laravel SQLSTATE [42S22]: столбец не найден: 1054 - PullRequest
0 голосов
/ 10 мая 2018

Привет! Я создаю простую функцию поиска в Laravel и получаю сообщение об ошибке:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'landmarks' in 'where clause' (SQL: select * from местоположения where exists (select * from ориентиры where местоположения . id = ориентиры . location_idand landmarks LIKE %%))

Моя функция поиска состоит из текстового поля в моем представлении, и я хочу отображать результаты под ним после нажатия на поиск.Однако в моем SearchController в моей индексной функции обнаружен следующий код:

public function index(Request $request){
    $landmarks = $request->input('location');
    //if($landmarks != ''){
      $locations = Location::whereHas('landmark', function($query) use ($landmarks) {
          $query->where('landmarks', 'LIKE', '%' . $landmarks . '%');
      })->get();
    //}

    return view('pages.search', compact('location'));
  }

Я подозреваю, что это проблема того, что мой ввод 'location' пуст.Я не уверен, как справиться с этим.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Попробуйте это.

public function index(Request $request){
    $landmarks = $request->input('location');
    //if($landmarks != ''){
      $locations = Location::whereHas('landmarks', function($query) use ($landmarks) {
          $query->where('landmark', 'LIKE', '%' . $landmarks . '%');
      })->get();
    //}

    return view('pages.search', compact('location'));
  }

Я предполагаю, что "ориентиры" - это ваши отношения или имя метода, а у вас есть "ориентир" в качестве имени столбца.

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

0 голосов
/ 10 мая 2018

Используйте готовую загрузку ->with() вместо

$locations = Location::with(['landmark' => function($query) use ($landmarks) {
     $query->where('_the_column_name_on_your_landmarks_table', 'LIKE', '%'
                   . $landmarks . '%');
}])->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...