Laravel 搜索查询在所有情况下都不会得到结果,即使它应该

Posted

技术标签:

【中文标题】Laravel 搜索查询在所有情况下都不会得到结果,即使它应该【英文标题】:Laravel search query doesn't get results in all cases even though it should 【发布时间】:2021-09-18 14:33:39 【问题描述】:
public function find(Request $request)

   $validatedData = $request->validate([
     'search' => 'required|max:255',
   ]);
   $item = $request->search;

   $data = DB::table('products')
      ->join('categories','products.category_id','categories.id')
      ->join('subcategories','products.sub_category_id','subcategories.id')
      ->join('sub_of_subcategories','products.sos_category_id','sub_of_subcategories.id')
      ->select('products.*','categories.slug','categories.category_name','subcategories.sub_category_name','sub_of_subcategories.sub_of_sub_category_name')
      ->where('products.product_name','LIKE',"%$item%")
      ->orWhere('products.product_code',$item)
      ->orWhere('categories.category_name','LIKE',"%$item%")
      ->orWhere('subcategories.sub_category_name','LIKE',"%$item%")
      ->orWhere('sub_of_subcategories.sub_of_sub_category_name','LIKE',"%$item%")
      ->orWhere('products.product_description','LIKE',"%$item%")
      ->paginate(40);

    return response()->json($data);

当我按产品名称或产品代码或产品描述搜索时,它会显示结果。但是,如果我按类别名称或子类别名称搜索,那么它会显示一个空数组。 我该如何解决这个问题?

【问题讨论】:

dd() 你的$data 变量,看看会发生什么。如果它为空,那么你必须修改你的查询。 【参考方案1】:

您的加入查询错误,您必须像这样将= 登录到join 函数中

->join('categories', 'products.category_id', '=', 'categories.id')
->join('subcategories', 'products.sub_category_id', '=', 'subcategories.id')
->join('sub_of_subcategories', 'products.sos_category_id', '=', 'sub_of_subcategories.id')

希望它会起作用

编码愉快..

laravel join defination

【讨论】:

以上是关于Laravel 搜索查询在所有情况下都不会得到结果,即使它应该的主要内容,如果未能解决你的问题,请参考以下文章

Laravel QueryBuilder - 相同查询的 `where()` 和 `whereRaw()` 结果不同

Laravel Eloquent 搜索表单查询(表单中的多个参数)

在 laravel 中过滤搜索结果

laravel 过滤器返回所有记录

Laravel 在相关表中多次搜索

在 laravel 中搜索查询并计算结果的多对多关系