您好我正在Laravel上构建一个简单的搜索功能,我收到错误:
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 %%))
我的搜索功能在我的视图中包含一个文本框,我想在点击搜索后显示其下方的结果。但是,在我的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'));
}
我怀疑这是我的位置'输入为空。我不知道如何处理这个问题。
答案 0 :(得分:0)
使用预先加载->with()
代替
$locations = Location::with(['landmark' => function($query) use ($landmarks) {
$query->where('_the_column_name_on_your_landmarks_table', 'LIKE', '%'
. $landmarks . '%');
}])->get();
答案 1 :(得分:0)
试试这个。
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'));
}
我假设"地标"是你的关系或方法名称,你有"具有里程碑意义的"作为列名。
whereHas方法的第一个参数应该是关系或方法名称,然后在where方法的第一个参数中,它应该是相关表格地标上存在的列名。