首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel搜索函数查询构建器

Laravel搜索函数查询构建器
EN

Stack Overflow用户
提问于 2020-07-20 23:18:48
回答 2查看 695关注 0票数 2

我正在尝试编写一个函数来处理我的网站的搜索查询

我有一个名为'unique‘的字段,对于此搜索,它具有true或false值。因为这个页面将列出非唯一的结果,所以我需要它作为例如'unique' , '!=', true

我还有另外两个字段name, description,所以当你搜索它时,它会返回预期的结果

我已经写了下面的代码,但是如果我单击页面上的搜索,它将列出所有结果,而不管唯一字段是真还是假,如果我搜索的名称或描述返回的结果忽略唯一字段。

代码语言:javascript
运行
复制
    $films = Film::when($request->input('unique'), function ($query) {
        $query->where('unique', '!=', true);
    })
        ->where('name', 'like', "%$search%")
        ->orWhere('description', 'like', "%$search%")
        ->get();

当涉及到雄辩的查询时,我不是很了解,所以我可能在这里遗漏了一些东西。

总结我需要的功能:如果我搜索时没有在搜索框字段中输入,则仅返回唯一为TRUE的记录,如果我在文本字段中搜索名称或描述,则仅返回与输入匹配且唯一为TRUE的记录。

任何反馈都会很棒,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-20 23:33:11

我不确定我是否理解了你的问题,但这可能是你的问题的解决方案:

代码语言:javascript
运行
复制
$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的所有胶片。

票数 1
EN

Stack Overflow用户

发布于 2021-08-16 02:05:07

我不确定我是否理解了你的问题,但这可能是你的问题的解决方案:

代码语言:javascript
运行
复制
$id = $request->id;
$search = $request->search;

$data = DB::table('invoice');
$data = $data->select('*');
if($search !== "") {
  $data = $data->where('id', '=', $id);
}
$data = $data->get();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62998620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档