我正在尝试编写一个函数来处理我的网站的搜索查询
我有一个名为'unique‘的字段,对于此搜索,它具有true或false值。因为这个页面将列出非唯一的结果,所以我需要它作为例如'unique' , '!=', true
我还有另外两个字段name, description,所以当你搜索它时,它会返回预期的结果
我已经写了下面的代码,但是如果我单击页面上的搜索,它将列出所有结果,而不管唯一字段是真还是假,如果我搜索的名称或描述返回的结果忽略唯一字段。
$films = Film::when($request->input('unique'), function ($query) {
$query->where('unique', '!=', true);
})
->where('name', 'like', "%$search%")
->orWhere('description', 'like', "%$search%")
->get();当涉及到雄辩的查询时,我不是很了解,所以我可能在这里遗漏了一些东西。
总结我需要的功能:如果我搜索时没有在搜索框字段中输入,则仅返回唯一为TRUE的记录,如果我在文本字段中搜索名称或描述,则仅返回与输入匹配且唯一为TRUE的记录。
任何反馈都会很棒,谢谢!
发布于 2020-07-20 23:33:11
我不确定我是否理解了你的问题,但这可能是你的问题的解决方案:
$filmQuery = Film::where('unique', false);
if($search !== "") {
$filmQuery = $filmQuery->where(function ($query) {
$query->where('name', 'like', "%$search%")
->orWhere('description', 'like', "%$search%");
});
}
$films = $filmQuery->get(); 这应该会让你得到所有的电影,其中'name'或'description'匹配你的$search,也有'unique' === false。
如果是$search === "" (空),你应该得到'unique' === false的所有胶片。
发布于 2021-08-16 02:05:07
我不确定我是否理解了你的问题,但这可能是你的问题的解决方案:
$id = $request->id;
$search = $request->search;
$data = DB::table('invoice');
$data = $data->select('*');
if($search !== "") {
$data = $data->where('id', '=', $id);
}
$data = $data->get();https://stackoverflow.com/questions/62998620
复制相似问题