• tp5数据库——查询数据


    查询数据

    基本查询

    查询一个数据使用:

    //    table方法必须指定完整的数据表名
    Db::table('think_user')->where('id',1)->find();

    注意:需要引入命名空间  use thinkDb;

    find 方法查询结果不存在,返回 null

    查询数据集使用:

    Db::table('think_user')->where('status',1)->select();

    select 方法查询结果不存在,返回空数组

    如果设置了数据表前缀参数的话,可以使用

    Db::name('user')->where('id',1)->find();
    Db::name('user')->where('status',1)->select();

    如果你的数据表没有使用表前缀功能,那么name和table方法的一样的效果。

    findselect方法之前可以使用所有的链式操作方法。

    默认情况下,find和select方法返回的都是数组。

     

    助手函数

    系统提供了一个db助手函数,可以更方便的查询:

    db('user')->where('id',1)-find();
    db('user')->wehre('status',1)->select();

    注意:使用db助手函数默认每次都会重新连接数据库,而使用Db::name或者Db::table方法的话都是单例的。db函数如果需要采用相同的链接,可以传入第三个参数,例如:

    db('user',[],false)->where('id',1)->find();
    db('user',[],false)->where('status',1)->select();

    上面的方式会使用同一个数据库连接,第二个参数为数据库的连接参数,留空表示采用数据库配置文件的配置。

    版本 调整功能
    5.0.9 db助手函数默认不再强制重新连接

    使用Query对象或闭包查询

    或者使用查询对象进行查询,例如:

    $query = new 	hinkdbQuery();
    $query -> table('think_user') -> where('status',1);
    Db::find($query);
    Db::select($query);

    或者直接使用闭包函数查询,例如:

    Db::select(function($query)){
        $query->table('think_user')->where('status',1);
    });

    值和列查询

    查询某个字段的值可以使用

    //    返回某个字段的值
    Db::table('think_user') -> where('id',1) -> value('name');

    value 方法查询结果不存在,返回 null

    查询某一列的值可以用

    //    返回数组
    Db::table('think_user') -> where('status',1) -> column('name');
    //    指定索引
    Db::table('think_user') -> where('status',1) -> column('name','id');
    Db::table('think_user') -> where('status',1) -> column('id, name');    //同tp3的getField

    column 方法查询结果不存在,返回空数组

    数据集分批处理

    如果你需要处理成千上百条数据库记录,可以考虑使用chunk方法,该方法一次获取结果集的一小块,然后填充每一小块数据到要处理的闭包,该方法在编写处理大量数据库记录的时候非常有用.

    比如,我们可以全部用户表数据进行分批处理,每次处理100个用户:

    Db::table('think_user') -> chunk(100, function($users) {
       foreach($users as $user)  {
            //
        }
    });
    //    或者交给回调方法myUserIterator处理
    Db::table('think_user') -> chunk(100,'myUserIterator');

    你可以通过从闭包函数中返回false来中止对数据集的处理:

    Db::table('think_user') -> chunk(100, function($users) {
       //处理结果集...
       return false;  
    })

    也支持在chunk方法之前调用其他的查询方法,例如:

    Db::table('think_user') -> where('score', '>', 80) -> chunk(100, function($users) {
       foreach ($users as $user){
            //
        } 
    });

    chunk方法的处理默认是根据主键查询,支持指定字段,例如:

    Db::table('think_user')->chunk(100, function($users) {
        // 处理结果集...
        return false;
    }, 'create_time');

    V5.0.11版本开始,chunk方法支持指定处理数据的顺序。

    Db::table('think_user')->chunk(100, function($users) {
        // 处理结果集...
        return false;
    }, 'create_time', 'desc');

    JSON类型数据查询(mysql V5.0.1

    // 查询JSON类型字段 (info字段为json类型)
    Db::table('think_user')->where('info$.email','thinkphp@qq.com')->find();
  • 相关阅读:
    大气漂亮美观的三个网站后台数据管理模板 大大提升你的开发效率
    9个设计师常用的高清图库 不敢配图? 这9个免版权图库牢记心中!
    《PHP制作个人博客》之四:分类添加及前端导航数据用php动态调取
    《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来
    《全栈营销之如何制作个人博客》之一:用什么开发语言和CMS系统
    adobe 2020版全家桶免费破解版 最新pr, photoshop ae 免费使用
    三个装修 家具 装饰公司网站模板 大气美观 简单明了的静态模板
    程序员摆地摊能接到活吗?码农地摊卖什么能挣到外快钱?
    phpstorm2020最新版激活方法 永久更新
    五个最适合做博客的开源系统 开源免费大量精美模板使用!
  • 原文地址:https://www.cnblogs.com/fei-H/p/11763401.html
Copyright © 2020-2023  润新知