精华内容
下载资源
问答
  • laravel5系列查询构造器高级查询

    千次阅读 2019-07-03 21:22:35
    用了laravel框架之后发现一些的复杂的sql很难写出来,现把一些用到的高级sql查询总结分享出来: 子查询:如果用原生的写法就比较简单了这里就不多说了,这里讲解一个laravel的查询构造器用子查询: //子查询语句 $...

    用了laravel框架之后 发现一些的复杂的sql很难写出来,现把一些用到的高级sql查询总结分享出来:

    子查询:如果用原生的写法就比较简单了这里就不多说了,这里讲解一个laravel的查询构造器用子查询:

    //子查询语句
    $sub = DB::table('detail')->select(['cate_id'])->groupBy('cate_id');
    
    //生成sql语句
    $sub->toSql()
    
    //里面用原生的sql语法
    DB::raw
    
    //完整语句
    
    $list = DB::table('cate')
        ->leftJoin(DB::raw("({$sub->toSql()}) blog_detail"),'cate.id','=','detail.cate_id')
        ->select(DB::raw('cate_name'))
        ->paginate(3);
    

     

    使用复杂的原生sql查询,注意整个sql要用()包裹还得取别名,因为分页会count(*)

        $sql = "(select a.name,b.displayname  from  roles a  inner join 
                    (
                            select role_id,group_concat( DISTINCT displayname SEPARATOR ',') as displayname  
                            from role_has_permissions b  
                            left join perssion c on b.perssion_id=c.id
                            GROUP BY role_id order by role_id asc
                
                    ) b on a.id=b.role_id) cc";
            $data =  DB::table(DB::raw($sql))->paginate(10);
            return $data;

    未完,待续..........................

    展开全文
  • 以上这篇基于laravel where的高级使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:浅谈laravel中的关联查询with的问题在laravel中使用with实现...
  • 这篇文章主要介绍了在Laravel5.6中使用Swoole协程数据库查询,详细介绍了什么是Swoole,以及Laravel5.6中使用Swoole,非常具有实用价值,需要朋友可以参考下(点击此处加入php高级交流群一起学习交流,10年架构...

    这篇文章主要介绍了在Laravel5.6中使用Swoole的协程数据库查询,详细的介绍了什么是Swoole,以及Laravel5.6中使用Swoole,非常具有实用价值,需要的朋友可以参考下

    (点击此处加入php高级交流群一起学习交流,10年架构师带你解读年薪50万面试通关秘籍。)

    什么是Swoole

    直接套用Swoole官网的介绍:PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

    Swoole官网的文档不够丰富啊,这比较头疼,但大部分的问题都解释了。如果你对Swoole很感兴趣,那么看看这个Swoole入门教程。Swoole提供了多线程、长连接等很多牛逼的功能,把php上升到了一个新的台阶,具体的你可以看看入门教程,本文只限于讨论Laravel和Swoole的结合。

    Swoole为了提供服务,必须以CLI模式运行,什么是CLI模式呢?如果你Swoole业务代码是写在一个叫server.php的文件中,那么在命令行下输入php server.php开启。这是比较头疼的事情,因为Laravel框架可不是这样的运转的,那如何能与Laravel结合呢?没错,自定义一条Artisan Command,就这么简单。

    强烈推荐在你的laravel项目中,使用 laravel-s 这个包.

    composer require "hhxsv5/laravel-s:~1.0" -vvv

    然后,依赖kuaiapp/db这个包,作用是实现SwooleCoroutineMySQL的伪 PDO 接口

    composer require "kuaiapp/db" -vvv

    vendor/laravel/framework打patch

    cd .//vendor/laravel/framework
    
    wget https://gist.githubusercontent.com/xiaohuilam/81ae50c1bc06180bd8e6fcbdaadba86a/raw/529cb96ca9abeed7a35076725b3b5cd8a1e04ff7/git.patch
    
    git am < git.patch

    启动laravel-s

    php artisan laravels start

    现在你就可以测试你的数据库查询了。

    以上就是本文的全部内容,希望对大家的学习有所帮助

    程序猿的生活:【社群福利】30G-PHP进阶资料,助力大家都能30Kzhuanlan.zhihu.com
    2042d032a0bdfd6b2407ef5eac697b31.png

    以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处。

    展开全文
  • laravel where的高级使用方法

    万次阅读 2018-05-26 18:13:27
    Laravel作为一个人见人爱框架,相信很多人在使用,那就避免不了对Sql语句应用,很多情况下,在多种字段作为条件查询使用where时候,不需要复杂原生语句, 使用一个闭包,就能达到你想要效果。 欢迎...

    Laravel作为一个人见人爱的框架,相信很多人在使用,那就避免不了对Sql语句的应用,很多情况下,在多种字段作为条件查询使用where的时候,不需要复杂的原生语句,
    这里写图片描述
    使用一个闭包,就能达到你想要的效果。

    展开全文
  • 上一节我们简单介绍了如何使用查询构建器对数据库进行基本增删改查操作,这一节我们来探讨如何使用查询构建器实现一些更高级的查询操作。 1、连接查询(join) 连接查询是将两张表或多张表关联到一起进行...

    上一节我们简单介绍了如何使用查询构建器数据库进行基本的增删改查操作,这一节我们来探讨如何使用查询构建器实现一些更高级的查询操作。

    1、连接查询(join

    连接查询指的是将两张表或多张表关联到一起进行查询,获取一个表的行与另一个表的行匹配的数据。常见的连接查询包括内连接(等值连接)、左(外)连接、右(外)连接和交叉连接(完全连接)等。下面这张图形象的展示了这几种连接查询所获取的结果集:

    SQL连接查询

    下面我们简单演示下内连接和左连接。我们将用户表users和文章表posts关联到一起进行查询,在此之前,我们先创建posts表,其字段及初始值如下:

    文章表posts

    其中user_id对应users表中的用户id。

    1.1 内连接

    内连接用于获取两张表结果集的交集部分,我们可以使用查询构建器的join方法进行内连接查询:

    $users = DB::table('users')->join('posts','users.id','=','posts.user_id')->get();
    dd($users);

    显示结果如下:

    inner join 查询结果

    1.2 左连接

    左连接的结果集指定的左表的所有行,如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。我们使用查询构建器的leftJoin方法进行左连接查询:

    $users = DB::table('users')->leftJoin('posts','users.id','=','posts.user_id')->get();
    dd($users);

    对应的输出结果为:

    left join 查询结果

    1.3 更加复杂的连接查询

    很多时候,连接查询的查询条件往往更为复杂,并不是一个简单的join/leftJoin方法就能搞定的,那么我们如何添加更加复杂的查询条件呢?使用JoinClause代替条件参数:

    $users = DB::table('users')->join('posts',function($join){
        $join->on('users.id','=','posts.user_id')
             ->where('posts.id','>',1);
    })->get();
    dd($users);

    输出结果为:

    复杂连接查询结果集

    2、联合查询(union

    联合查询用于将两个或更多查询的结果集组合为单个结果集,该结果集包含联合查询中所有查询的全部行。UNION的结果集列名与UNION运算符中第一个Select语句的结果集的列名相同,另一个Select语句的结果集列名将被忽略,且其他查询字段数必须和第一个相同。Laravel查询构建器中我们使用union方法进行联合查询:

    $users = DB::table('users')->where('id','<',3);
    $users = DB::table('users')->where('id','>',2)->union($users)->get();
    dd($users);

    输出结果为:

    联合查询结果集

    3、where子句

    使用查询构建器上的where方法可以添加自定义查询条件,调用该方法需要传入三个参数:第一个列名,第二个是操作符,第三个是比较值:

    $user = DB::table('users')->where('name','=','Laravel')->get();
    dd($user);

    如果操作符为“=”,该语句也可简化为:

    $user = DB::table('users')->where('name','Laravel')->get();

    输出结果为:

    where查询结果集

    需要注意的是查询构建器支持方法链,这意味着如果有多个查询条件且这个多个条件是AND连接,可以在get之前使用多个where方法。如果多个条件使用OR连接,可以使用orWhere方法:

    $user = DB::table('users')->where('name','Laravel')->orWhere('name','Academy')->get();

    对应输出为:

    orWhere查询结果集

    更多where子句查询条件可查看Illuminate\Database\Query\Builder源码。

    4、排序

    查询构建器使用orderBy方法对查询结果进行排序:

    $users = DB::table('users')->orderBy('id','desc')->get();
    dd($users);

    根据代码可以看到orderBy方法需要传入两个参数,第一个是排序字段,第二个是排序方向,asc代表升序,desc代表倒序,上述代码输出为:

    orderBy查询结果集

    5、分组

    为了更好地演示分组,我们给数据表posts新增两个字段:cat_idviews,代表分类ID和浏览数:

    posts表新增分类ID和浏览数

    分组一般用于聚合查询,接下来我们使用groupBy方法对查询结果进行分组,比如我们可以统计每个分类下有几篇文章:

    $posts = DB::table('posts')->select('cat_id',DB::raw('COUNT(id) as num'))->groupBy('cat_id')->get();
    dd($posts);

    输出如下:

    groupBy查询结果集

    我们还可以使用having方法为分组加上条件,比如我们可以统计总浏览数大于500的分类:

    $posts = DB::table('posts')->select('cat_id',DB::raw('SUM(views) as views'))->groupBy('cat_id')->having('views','>',500)->get();
    dd($posts);

    输出结果为:

    加条件的分组查询结果

    注意:having中的条件字段必须出现在select查询字段中,否则会报错。

    6、分页

    查询构建器中使用skiptake对查询结果进行分页,相当于SQL语句中的limit语句:

    $posts = DB::table('posts')->skip(0)->take(2)->get();
    dd($posts);

    对应的输出结果为:

    分页查询结果集

    展开全文
  • 文章目录查询小技巧聚合函数高级 Where 查询基本查询高级查询连接查询相关术语创建并填充 posts 表内连接左连接右连接其它连接语句更加复杂连接条件联合查询排序分组分页 查询小技巧 我们首先来介绍几个 Laravel ...
  • 连接查询是将两张表或多张表关联到一起进行查询,获取一个表行与另一个表行匹配数据。常见连接查询包括内连接(等值连接)、左(外)连接、右(外)连接和交叉连接(完全连接)等。 我们将用户表...
  • 上一节我们简单介绍了如何使用查询构建器对数据库进行基本增删改查操作,这一节我们来探讨如何使用查询构建器实现一些更高级的查询操作。 1、连接查询(join) 连接查询是将两张表或多张表关联到一起进行...
  • laravel中我们常常会使用join,leftjion和rightjoin进行连表查询,非常方便,但是我今天遇到一个问题,就是链表查询需要on多个条件,即我要订单id和发货人都一样,默认join只支持单个查询,所以我下面总结两...
  • laravel中我们常常会使用join,leftjion和rightjoin进行连表查询,非常方便,但是我今天遇到一个问题,就是链表查询需要on多个条件,即我要订单id和发货人都一样,默认join只支持单个查询,所以我下面总结两...
  • 连接查询是将两张表或多张表关联到一起进行查询,获取一个表行与另一个表行匹配数据。常见连接查询包括内连接(等值连接)、左(外)连接、右(外)连接和交叉连接(完全连接)等。下面这张图形象展示...
  • Laravel或Lumen提供雄辩的查询构建器 该程序包使您可以基于请求参数来构建雄辩的查询。 它极大地降低了查询和条件复杂性,这将使您代码干净且可维护。 基本用法 假设您要获得具有所请求参数用户列表,如下...
  • 引言数据库操作是应用程序不可避免绝大多数。...今天,我们就从一个复杂一些嵌套式查询说起。学习时间对于数据库DBA可能更习惯从SQL角度出发,从SQL现有语言结构和功能上解决问题。比如查询一个product表,...
  • Laravel Eloquent ORM 一种高级用法

    万次阅读 2015-03-03 15:06:13
    自己写得一种laravel Eloqument ORM 组合查询方法,仅供参考,欢迎拍砖!
  • laravel手册

    2018-06-27 16:09:08
    Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便将“约束(constraints)”应用到关系双方,这样你就具有了对数据完全控制,而且享受到ActiveRecord所有便利。Eloquent原生...
  • 查询作用域全局作用域全局作用域允许你对给定模型所有查询添加约束。使用全局作用域功能可以为模型所有操作增加约束。软删除功能实际上就是利用了全局作用域功能实现一个全局作用域功能只需要定义一个实现...
  • Laravel的主要技术特点: 1、Bundle是Laravel的扩展包组织形式或称呼。Laravel的扩展包仓库已经相当成熟了,可以很容易的帮你把扩展包(bundle)安装到你的应用中。你可以选择下载一个扩展包(bundle)然后拷贝到...
  • 功能 功能清单: 高性能无限级分类; 众筹商品管理; 众筹商品下单逻辑; 众筹商品结束逻辑; 使用分期付款支付订单;...分期付款订单退款;...相似商品查询;...Elasticsearch 索引迁移;...Laravel Shop Advan...
  • 查询作用域全局作用域全局作用域允许你对给定模型所有查询添加约束。使用全局作用域功能可以为模型所有操作增加约束。 软删除功能实际上就是利用了全局作用域功能 实现一个全局作用域功能只需要定义一个实现...
  • 在本案例研究中,百度的高级架构师刘少山分享了他们在生产环境中使用Alluxio的经验,以及为什么Alluxio能够带来显著的性能提升。使用Alluxio将原先的批处理查询将转换为交互式查询,这使百度能够以交互方式分析数据...
  • Laravel中已经具有了一套高级的PHP ActiveRecord实现 — Eloquent ORM。它能方便将“约束(constraints)”应用到关系双方,这样你就具有了对数据完全控制,而且享受到ActiveRecord所有便利。Eloquent原生...
  • 使用模型或查询构建器来提供数据 使用预设或自定义回调对列进行突变和格式化 使用列或计算列对数据排序 使用布尔值,时间,日期,选择内容或自由文本进行过滤 显示/隐藏列 要求 安装 您可以通过composer安装该软件包...
  • Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便将“约束(constraints)”应用到关系双方,这样你就具有了对数据完全控制,而且享受到ActiveRecord所有便利。Eloquent原生...
  • 本文实例讲述了Laravel使用memcached缓存对文章增删改查进行优化的方法。...关于文章对应数据表我们在数据库部分使用查询构建器实现对数据库的高级查询已有提及,这里我们使用之前创建的数据表即可。 创建文章模型 关
  • 查询作用域 全局作用域 全局作用域允许你对给定模型所有查询...实现一个全局作用域功能只需要定义一个实现Illuminate\Database\Eloquent\Scope接口类,该接口只有一个方法apply,在该方法中增加查询需要约束 ...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

laravel的高级查询