zoukankan      html  css  js  c++  java
  • 链式操作2

    page

    // 查询第一页数据
    Db::table('think_article')->limit('0,10')->select(); 
    // 查询第二页数据
    Db::table('think_article')->limit('10,10')->select(); 

    group

    Db::table('think_user')
        ->field('user_id,test_time,username,max(score)')
        ->group('user_id,test_time')
        ->select();
    SELECT user_id,test_time,username,max(score) FROM think_score GROUP BY user_id,test_time

    having

    Db::table('think_user')
        ->field('username,max(score)')
        ->group('user_id')
        ->having('count(test_time)>3')
        ->select(); 

    join

    Db::table('think_artist')
    ->alias('a')
    ->join('think_work w','a.id = w.artist_id')
    ->join('think_card c','a.card_id = c.id')
    ->select();

    union

    NION操作用于合并两个或多个 SELECT 语句的结果集。

    使用示例:

    Db::field('name')
          ->table('think_user_0')
          ->union('SELECT name FROM think_user_1')
          ->union('SELECT name FROM think_user_2')
          ->select();
    

    闭包用法:

    Db::field('name')
          ->table('think_user_0')
          ->union(function($query){
          	$query->field('name')->table('think_user_1');
            })
          ->union(function($query){
          	$query->field('name')->table('think_user_2');
            })
          ->select();
    

    或者

    Db::field('name')
          ->table('think_user_0')
          ->union(['SELECT name FROM think_user_1','SELECT name FROM think_user_2'])
          ->select();
    

    支持UNION ALL 操作,例如:

    Db::field('name')
          ->table('think_user_0')
          ->union('SELECT name FROM think_user_1',true)
          ->union('SELECT name FROM think_user_2',true)
          ->select();
    

    或者

    Db::field('name')
          ->table('think_user_0')
          ->union(['SELECT name FROM think_user_1','SELECT name FROM think_user_2'],true)
          ->select();


    cache

    Db::table('think_user')->where('id=5')->cache(true)->find();

    这里的缓存自动更新是指一旦数据更新或者删除后会自动清理缓存(下次获取的时候会自动重新缓存)。

    当你删除或者更新数据的时候,可以使用cache方法手动更新(清除)缓存,例如:

    Db::table('think_user')->cache('user_data')->select([1,3,5]);
    Db::table('think_user')->cache('user_data')->update(['id'=>1,'name'=>'thinkphp']);
    Db::table('think_user')->cache('user_data')->select([1,5]);
    

    最后查询的数据不会受第一条查询缓存的影响,确保查询和更新或者删除使用相同的缓存标识才能自动清除缓存。

    如果使用find方法并且使用主键查询的情况,不需要指定缓存标识,会自动清理缓存,例如:

    Db::table('think_user')->cache(true)->find(1);
    Db::table('think_user')->update(['id'=>1,'name'=>'thinkphp']);
    Db::table('think_user')->cache(true)->find(1);


    comment

    Db::table('think_score')->comment('查询考试前十名分数')
        ->field('username,score')
        ->limit(10)
        ->order('score desc')
        ->select();
    

    最终生成的SQL语句是:

    SELECT username,score FROM think_score ORDER BY score desc LIMIT 10 /* 查询考试前十名分数 */
     
     
  • 相关阅读:
    11.网络请求
    关于 Android 开发中的 127.0.0.1 Connection refused ...
    Android的Handler总结(转)
    httpruner3 运行
    allure安装使用
    初来乍到
    修改 SQL SERVER EXPRESS 登录模式
    关于防止用户表单多次提交方案的思考
    C语言static
    Linux ar 命令的使用说明
  • 原文地址:https://www.cnblogs.com/mmore123/p/12848455.html
Copyright © 2011-2022 走看看