这是我无法找到文档的东西。我需要为我的页面进行多个AJAX搜索。他们都来自同一个数据库。搜索的唯一区别是他们可能只需要搜索并只搜索一列。Laravel命名'Where'和AJAX语句
例如:我的页面包含一个搜索整个数据库的输入,一个允许我按国家过滤的选择和另一个允许按类型过滤的过滤器。
我遇到的问题是我无法使用,例如使select只搜索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
列?有可能以某种方式命名它们吗?
你的意思是' - > orWhere($请求 - >类型, '喜欢',“% ”。$请求 - >搜索。 '%'):'? –
@OmisakinOluwatobi - 不幸的是,这是行不通的。每当我搜索我得到一个500服务器错误。我想这是因为它向搜索URL添加了一个'&type = country'。 –
这意味着您必须确保“类型”中的文本与数据库表中的列相同 –