php – Laravel – 查询模型,如果值包含某个字符串(取自搜索输入
发布时间:2020-12-14 19:36:41 所属栏目:大数据 来源:网络整理
导读:我正在使用Laravel和Ajax实现搜索.所以我有一个属于Tag和子类别的Product.另一方面,子类别属于类别.我想检查它们的所有属性(字段值)并检查它们是否包含给定的字符串.通过一些搜索,我发现我必须使用LIKE.这是我尝试过的: $products = Product::where('name_e
我正在使用Laravel和Ajax实现搜索.所以我有一个属于Tag和子类别的Product.另一方面,子类别属于类别.我想检查它们的所有属性(字段值)并检查它们是否包含给定的字符串.通过一些搜索,我发现我必须使用LIKE.这是我尝试过的:
$products = Product::where('name_en','LIKE',$search)->get(); 但是,如果搜索字符串与该值完全匹配,则会获得产品.如果它包含它我想匹配.我如何处理belongsTo关系?我如何检查标签和子类别的标准?如何将所有东西连在一起,以达到理想的效果?提前致谢. 解决方法
你做错了一件事,你的查询会返回完全匹配,因为你给出了确切的字符串.但是你的查询应该是这样的.
$products = Product::where('name_en','%'.$search.'%')->get(); 以上查询将为您的产品提供包含搜索字符串的产品. 如果你想在关系表中搜索,那么你可以使用laravel方法join().但还有一种方法,但我总是避免使用这种方法,因为它创建了非常复杂的查询.这很重.所以你可以使用join()方法,它将使用关系表添加内连接. 以下是加入的示例: $products = Product::join('tags',function($builder) { $builder->on('tags.id','=','products.tag_id'); // here you can add more conditions on tags table. }) join('sub_categories',function($builder) { $builder->on('sub_categories.id','products.tag_id'); // here you can add more conditions on subcategories table. }) ->where('name_en','%'.$search.'%') ->get(); 这是基本示例,您可以根据您的要求使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |