Laravel搜索函数查询生成器

wlwcrazw  于 2023-02-25  发布在  其他
关注(0)|答案(2)|浏览(122)

我试图写一个函数,处理我的网站搜索查询
我有一个名为'unique'的字段,该字段具有此搜索的true或false值。因为此页面将列出非唯一结果,所以我需要它,例如'unique' , '!=', true
我有2个其他字段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的记录。
任何反馈将是伟大的,谢谢!

bvuwiixz

bvuwiixz1#

我不知道我是否明白你的问题,但这可能是一个解决你的问题:

$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所在位置的所有胶片。

8fsztsew

8fsztsew2#

我不知道我是否明白你的问题,但这可能是一个解决你的问题:

$id = $request->id;
$search = $request->search;

$data = DB::table('invoice');
$data = $data->select('*');
if($search !== "") {
  $data = $data->where('id', '=', $id);
}
$data = $data->get();

相关问题