首页
学习
活动
专区
圈层
工具
发布

3分钟短文|Laravel 使用like匹配字符串的用法示例

引言 本文接着laravel的功能讲解,说一说在模型中查询条件内,使用like这样的SQL关键字 进行子字符串匹配。并通过几个示例,和不同的实现方法,为大家展示laravel的灵活性。...如果实在不行,在可读性上,我们可以尝试一下laravel提供的本地作用域功能, 在模型内,或者全局内创建一个查询方法。...当然了,如果倾向于使用原生的SQL语句实现,在模型的查询方法上可以像下面这样写: BookingDates::whereRaw('email = ? or name like ?'..., [$request->email,"%{$request->name}%"])->get(); 特别注意的是laravel的参数绑定是使用问号的。...最后再说一个知识点,就是MySQL内置的关键字,除了like匹配之外,我们还可以使用内置字符串函数instr进行判断。

2.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL LIKE查询太慢?手把手搭建Elasticsearch站内搜索

    但最近做一个站内搜索功能时,遇到了一个新问题:用LIKE'%关键词%'查询标题,数据量一上来,查询速度直接卡死,用户体验极差。我也想过建索引,但LIKE后面带通配符%,索引根本用不上。那怎么办?...rows:100000←扫描10万行Extra:Usingwhere问题分析:LIKE'%数据库%'的模式:前导通配符%,导致无法使用索引数据库必须逐行扫描每一条记录对比时间复杂度是O(n)随着数据量增长...二、方案对比:MySQL全文索引vsElasticsearch面对LIKE性能问题,主要有两种解决方案:方案1:MySQL原生全文索引MySQL提供了全文索引功能,专门处理文本搜索。...七、今日学习心得今天的内容不少,但核心就这几句话:MySQLLIKE性能差是因为前导通配符导致无法使用索引MySQL全文索引适合小数据量的英文搜索,中文支持有限Elasticsearch基于倒排索引,搜索速度与数据量无关数据同步有三种方案...:Logstash(定时)、Canal(实时)、应用层双写(灵活)搜索性能提升100倍以上,用户体验质的飞跃以前觉得"搜索功能很简单,直接LIKE就行",现在才知道专业的搜索需要专门的引擎。

    20510

    【架构实战】搜索系统架构:从LIKE查询到ES的演进

    一、一个LIKE查询拖垮了数据库2018年,我们的商品搜索用MySQLLIKE查询:展开代码语言:SQLAI代码解释SELECT*FROMproductWHEREnameLIKE'%手机%';结果:商品表...100万条记录LIKE查询耗时10秒数据库CPU飙到100%全站搜索功能不可用从那以后,我们开始搭建专业的搜索系统。...二、搜索系统演进2.1阶段一:数据库LIKE查询展开代码语言:TXTAI代码解释┌────────────────────────────────────────────────────────────...("brand_agg").field("brand.keyword");坑3:分词不一致问题:索引和搜索使用不同分词器,导致搜索不到。...:方案QPS延迟功能复杂度LIKE查询100秒级简单低全文索引1000毫秒级中等中ES10000+毫秒级丰富高血的教训:搜索是用户找商品的入口,性能差直接影响转化率。

    11410

    Laravel 路由使用入门

    而我们的 Laravel 从入门到精通系列教程之旅也将从路由开始,在这篇真正意义上的开篇教程中,我们将学习如何定义路由,然后将其指向要执行的代码,并处理各种路由需求。...这就是一个最简单的 Laravel 路由定义,但是涵盖了一个 Web 框架的基本功能:处理请求,返回响应。...Laravel 开发静态站点,就是这么简单!...你可以在视图文件中这么使用: 此外,Laravel 还允许你为每个路由命名,这样一来,不必显式引用路径 URL 就可以对路由进行引用,这样做的好处是你可以为一些复杂的路由路径定义一个简单的路由名称从而简化对路由的引用...注:在实际开发过程中,推荐使用路由命名来引用路由。 (全文完)

    4.7K50

    Laravel队列简单使用

    所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。...同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。...DB 类,而不是使用 ORM 因为一般我们会在模型监听器中分发队列任务,此时,会形成一个死循环 通过 ORM 写数据库,触发 ORM 监听器 -> 分发队列任务 -> 任务中使用了 ORM 写数据库...} } 队列监控 1.通过命令监控 php artisan queue:listen 2.有图形界面的监控 Horizon 安装Horizon composer require "laravel.../horizon:~1.0" 生成配置 php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider" 接下来输入

    1.5K20

    Elasticsearch 搜索实战 | 告别 LIKE:亿级数据毫秒返回的秘密

    今天这篇文章,我会带你从零开始,彻底搞懂:❌为什么传统数据库的LIKE查询这么慢?✅Elasticsearch是如何做到亿级数据毫秒返回的?倒排索引、分布式查询的底层原理是什么?...对比维度MySQLElasticsearch查询方式LIKE'%keyword%'全文检索查询速度秒级(大数据量)毫秒级数据量百万级开始变慢亿级依然流畅适用场景事务处理搜索、日志分析扩展性垂直扩展(加配置...即使你加了B+树索引,也只能优化=、>、LIKE'%keyword%'无能为力。...elasticsearch-analysis-ik/releases/download/v7.17.0/elasticsearch-analysis-ik-7.17.0.zip2.5倒排索引的存储结构ES使用...四、ES查询语法(DSL)实战ES使用JSON格式的DSL(DomainSpecificLanguage)进行查询。

    1.2K7172

    Laravel 路由使用进阶

    1、中间件 我们使用路由分组最常见的场景恐怕就是为一组路由应用共同的中间件了,关于中间件可以参考官方文档(https://xueyuanjun.com/post/9539.html),后面也会有单独章节来讲解...,使用中间件可以对 HTTP 请求进行过滤或重定向,比如以认证中间件(别名auth)为例,如果用户已经认证可以进行后续处理,否则将会把用户重定向到登录页面。...() { return view('account'); }); }); 如果是多个中间件,可以通过数组方式传递参数,比如 ['auth', 'another'],以上是 Laravel...view('account'); }); }); 当然,链式调用只是语法糖,底层最终还是下面 Route::group 这种定义实现的,感兴趣的同学可以去看下源码是如何实现的:vendor/laravel...,我们还可以基于这一特征对路由进行分组,使用 Route::name 方法即可实现: // 路由命名+路径前缀 Route::name('user.')

    2.5K20
    领券