这是我找不到文档的东西 . 我需要为我的页面进行多次AJAX搜索 . 它们都来自同一个数据库 . 搜索的唯一区别是他们可能只需要只搜索和搜索一列 .
例如:我的页面包含一个搜索整个数据库的输入,一个允许我按国家/地区筛选的选项和另一个允许我按类型筛选的筛选器 .
我遇到的问题是我无法,例如使选择仅搜索 country
列 . 它搜索整个数据库,而我只需搜索一列 .
问题在于我使用一个控制器来处理所有事情 - 只需要搜索整个数据库就可以了 . 当只搜索指定的列时,它不起作用 . 这是有问题的控制器:
$launchsitesatellite = DB::table('satellites')
->where(function($q) use ($request) {
$q->orWhere('satname','LIKE','%'.$request->search.'%')
->orWhere('norad_cat_id','LIKE','%'.$request->search.'%')
->orWhere('country','LIKE','%'.$request->search.'%')
->orWhere('object_id','LIKE','%'.$request->search.'%');
})
->where('site', $site_code)->get();
该控制器允许轻松搜索我的数据库 . 我现在将展示我的AJAX请求:
$("#filter-country").change(function() {
$value=$(this).val();
$.ajax({
type: "get",
url: "{{$launchsitename->site_code}}",
data: {'search':$value, type:'country'},
success: function(data){
$('#launchsatdisplay').html(data);
}
});
});
这将获得用户提供的搜索请求 . 这,再次完美地工作,并设法得到我想要的结果 . 唯一的是它搜索我的整个数据库,而我只想搜索我的数据库中的 country
列 .
基本上,我的问题是:我是否可以命名AJAX请求,例如 country
并要求我的控制器仅使用 ->orWhere('country')
搜索请求,因此它只使用我的数据库中的 country
列?有可能以某种方式命名他们吗?
1 回答
由于您使用
type
指定搜索类型,因此您可以在子查询中使用它: