我在 Laravel 中的 where
语句方面遇到了问题。我用它从数据库获取数据,然后将其推送到实时搜索:
$launchsitesatellite = DB::table('satellites')
->orWhere('satname','LIKE','%'.$request->search.'%')
->orWhere('norad_cat_id','LIKE','%'.$request->search.'%')
我需要添加此内容来过滤来自数据库的结果:->where('site', $site_code)
。
我尝试将其添加到上面的 where
语句中,但是当我尝试在输入中键入某些内容时,它破坏了我的实时搜索并导致 500 服务器错误。我可以使用 ->where('site', $site_code)
仅显示数据库中的数据,但不搜索它。
我的问题是:为什么 ->where('site', $site_code)
查询会破坏搜索?您将如何修复它?
编辑:我的 Controller 代码段:
if ($request->ajax())
{
$output="";
$launchsitesatellite = DB::table('satellites')
->orWhere('satname','LIKE','%'.$request->search.'%')
->orWhere('norad_cat_id','LIKE','%'.$request->search.'%')
if ($launchsitesatellite)
{
foreach ($launchsitesatellite as $key => $launchsitesatellites) {
$output .='<tr>'.
'<td>'.$launchsitesatellites->satname.'</td>'.
'<td>'.$launchsitesatellites->norad_cat_id.'</td>'.
'<td>'.$launchsitesatellites->object_type.'</td>'.
'</tr>';
}
}
return $output;
}
else {
$launchsitesatellite = DB::table('satellites')->where('site', $site_code)->get();
return view('pages/launchsite-filter', compact('launchsites', 'launchsitesatellite'));
}
}
最佳答案
让我们看一下 if block 中的代码:
if ($request->ajax())
{
$output="";
$launchsitesatellite = DB::table('satellites')
->orWhere('satname','LIKE','%'.$request->search.'%')
->orWhere('norad_cat_id','LIKE','%'.$request->search.'%')
if ($launchsitesatellite)
{
foreach ($launchsitesatellite as $key => $launchsitesatellites) {
$output .='<tr>'.
'<td>'.$launchsitesatellites->satname.'</td>'.
'<td>'.$launchsitesatellites->norad_cat_id.'</td>'.
'<td>'.$launchsitesatellites->object_type.'</td>'.
'</tr>';
}
}
return $output;
}
您遇到的错误(提到 here )是
Undefined property: Illuminate\Database\MySqlConnection::$satname
当您定义 $launchsitesatellite
时,您将在 SQL 语句中添加 where 子句,但永远不会启动它。
相反,请执行以下操作:
$launchsitesatellite = DB::table('satellites')
->orWhere('satname', 'LIKE', '%' . $request->search . '%')
->orWhere('norad_cat_id', 'LIKE', '%' . $request->search . '%')
->get();
关于php - Laravel 数据库 'Where' 语句中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45446968/