简体   繁体   English

Laravel SQLSTATE [42S22]:找不到列:1054

[英]Laravel SQLSTATE[42S22]: Column not found: 1054

Hi I am building a simple search function on Laravel, and I get the error: 嗨,我在Laravel上构建一个简单的搜索功能,并且出现错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'landmarks' in 'where clause' (SQL: select * from locations where exists (select * from landmarks where locations . id = landmarks . location_id and landmarks LIKE %%)) SQLSTATE[42S22]: Column not found: 1054 Unknown column 'landmarks' in 'where clause' (SQL: select * from位置where exists (select * from界标where位置. ID =地标. LOCATION_ID and地标LIKE %%))

My search function consist of a textbox in my view and I want to display the results underneath it after clicking on search. 我的搜索功能包括一个视图中的文本框,我想在单击搜索后在其下方显示结果。 However, in my SearchController the following code is found in my index function: 但是,在我的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'));
  }

I suspect it to be the problem that my 'location' input is empty. 我怀疑这是我的“位置”输入为空的问题。 I am not sure how to handle this. 我不确定如何处理。

Use eager loading ->with() instead 使用预先加载->with()代替

$locations = Location::with(['landmark' => function($query) use ($landmarks) {
     $query->where('_the_column_name_on_your_landmarks_table', 'LIKE', '%'
                   . $landmarks . '%');
}])->get();

Try this. 尝试这个。

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'));
  }

I assume "landmarks" is your relationships or method name and you have "landmark" as column name. 我假设“地标”是您的关系或方法名称,并且您将“地标”作为列名称。

whereHas method first parameter should be the relationship or method name and then on where method first parameter it should be a column name that exists on the related table landmarks. whereHas方法的第一个参数应该是关系或方法名称,然后where方法的第一个参数应该是相关表地标上存在的列名称。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 SQLSTATE [42S22]:找不到列:1054 Laravel - SQLSTATE[42S22]: Column not found: 1054 Laravel SQLSTATE[42S22]:未找到列:1054 未知列 - SQLSTATE[42S22]: Column not found: 1054 Unknown column SQLSTATE [42S22]:找不到列:1054未知列 - SQLSTATE[42S22]: Column not found: 1054 Unknown column 错误:SQLSTATE[42S22]:未找到列:1054 CakePHP - Error: SQLSTATE[42S22]: Column not found: 1054 CakePHP SQLSTATE [42S22]:未找到列:1054 '字段列表' 中的未知列 '0' - Laravel Eloquent - SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' - Laravel Eloquent SQLSTATE [42S22]:未找到列:1054未知列一对多(反)关系laravel - SQLSTATE[42S22]: Column not found: 1054 Unknown column one to many(inverse) relation laravel SQLSTATE [42S22]:找不到列:1054 Laravel中“字段列表”中的未知列“ session” - SQLSTATE[42S22]: Column not found: 1054 Unknown column 'session' in 'field list' in Laravel Laravel 5.8:SQLSTATE[42S22]:未找到列:1054 未知列 - Laravel 5.8: SQLSTATE[42S22]: Column not found: 1054 Unknown column SQLSTATE [42S22]:未找到列:1054 未知列 - Laravel Livewire 购物车 - SQLSTATE[42S22]: Column not found: 1054 Unknown column - Laravel Livewire Cart LARAVEL 生产。错误:SQLSTATE [42S22]:找不到列:1054 未知列 - LARAVEL production.ERROR: SQLSTATE[42S22]: Column not found: 1054 Unknown column
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM