• 技术文章 >php框架 >ThinkPHP

    聊聊Thinkphp 5.0 对数据库的操作(关键代码)

    青灯夜游青灯夜游2022-09-23 19:28:36转载645

    一个标准的网站一定离不开数据库的操作,在本套课程中我和你一起来揭开ThinkPHP5 数据操作的神秘面纱,和你一起愉快的使用 ThinkPHP5 操作数据库,让数据库操作变的更愉悦。

    基本使用

    查询操作

    Db::query('select * from think_user where id=?',[8]);

    写入操作

    Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);

    查询构造器

    查询数据

    find 返回一条记录,返回的结果是一个一维数组 如果结果不存在,返回NULL

    Db::table('think_user')->where('id',1)->find();

    select 返回所有记录,返回的结果是一个二维数组 如果结果不存在,返回一个空数组

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

    助手函数

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

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

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

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

    添加数据

    使用 Db 类的 insert 方法向数据库提交数据

    $data = ['foo' => 'bar', 'bar' => 'foo'];
    Db::table('think_user')->insert($data);

    添加多条数据

    添加多条数据直接向 Db 类的 insertAll 方法传入需要添加的数据即可

    $data = [    ['foo' => 'bar', 'bar' => 'foo'],
        ['foo' => 'bar1', 'bar' => 'foo1'],
        ['foo' => 'bar2', 'bar' => 'foo2']
    ];
    Db::name('user')->insertAll($data);

    insertAll 方法添加数据成功返回添加成功的条数

    助手函数

    // 添加单条数据
    db('user')->insert($data);
    
    // 添加多条数据
    db('user')->insertAll($list);

    更新数据

    update 方法返回影响数据的条数,没修改任何数据返回 0

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

    更新某个字段的值: setField 方法返回影响数据的条数,没修改任何数据字段返回 0

    Db::table('think_user')->where('id',1)->setField('name', 'thinkphp');
    自增或自减一个字段的值
    // score 字段加 1
    Db::table('think_user')->where('id', 1)->setInc('score');
    // score 字段加 5
    Db::table('think_user')->where('id', 1)->setInc('score', 5);
    // score 字段减 1
    Db::table('think_user')->where('id', 1)->setDec('score');
    // score 字段减 5
    Db::table('think_user')->where('id', 1)->setDec('score', 5);

    延迟更新

    Db::table('think_user')->where('id', 1)->setInc('score', 1, 10);

    删除数据

    // 根据主键删除
    Db::table('think_user')->delete(1);
    Db::table('think_user')->delete([1,2,3]);
    
    // 条件删除    
    Db::table('think_user')->where('id',1)->delete();
    Db::table('think_user')->where('id','<',10)->delete();

    条件查询方法

    where

    可以使用where方法进行AND条件查询:

    Db::table('think_user')
        ->where('name','like','%thinkphp')
        ->where('status',1)
        ->find();

    whereOr方法

    Db::table('think_user')
        ->where('name','like','%thinkphp')
        ->whereOr('title','like','%thinkphp')
        ->find();

    混合查询

    where方法和whereOr方法在复杂的查询条件中经常需要配合一起混合使用,下面举个例子:

    $result = Db::table('think_user')->where(function ($query) {
        $query->where('id', 1)->whereor('id', 2);
    })->whereOr(function ($query) {
        $query->where('name', 'like', 'think')->whereOr('name', 'like', 'thinkphp');
    })->select();

    查询表达式

    查询表达式支持大部分的SQL查询语法,也是ThinkPHP查询语言的精髓,查询表达式的使用格式:

    where('字段名','表达式','查询条件');
    whereOr('字段名','表达式','查询条件');
    表达式 含义
    EQ、= 等于(=)
    NEQ、<> 不等于(<>)
    GT、> 大于(>)
    EGT、>= 大于等于(>=)
    LT、< 小于(<)
    ELT、<= 小于等于(<=)
    LIKE 模糊查询
    [NOT] BETWEEN (不在)区间查询
    [NOT] IN (不在)IN 查询
    [NOT] NULL 查询字段是否(不)是NULL
    [NOT] EXISTS EXISTS查询
    EXP 表达式查询,支持SQL语法
    > time 时间比较
    < time 时间比较
    between time 时间比较
    notbetween time 时间比较

    【相关教程推荐:thinkphp框架

    以上就是聊聊Thinkphp 5.0 对数据库的操作(关键代码)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:掘金社区,如有侵犯,请联系admin@php.cn删除
    专题推荐:php thinkphp
    上一篇:聊聊ThinkPHP6中如何使用Redis 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • laravel VS thinkphp, 如何决择?• thinkphp配置环境引入UI(实例详解)• thinkphp中使用ajax方法吗• thinkphp默认用的哪个模板引擎• 一文教你ThinkPHP使用think-queue实现redis消息队列• 聊聊ThinkPHP6中如何使用Redis
    1/1

    PHP中文网