zoukankan      html  css  js  c++  java
  • tp5增删改查

    数据库操作

    基本使用:使用 hinkDb类我们就可以直接使用数据库运行原生SQL操作了,支持query(查询操作)execute(写入操作)方法。

    查询构造器

    查询数据:

    查询一条数据使用

    // table方法必须指定完整的数据表名

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

    查询数据集使用:

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

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

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

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

    助手函数

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

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

    值和列查询

    查询某个字段的值可以用

    // 返回某个字段的值

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

    查询某一列的值可以用

    // 返回数组

    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

    添加数据

    添加一条数据

    $data = ['foo' => 'bar', 'bar' => 'foo'];

    Db::table('think_user')->insert($data);

    insert 方法添加数据成功返回添加成功的条数,insert 正常情况返回 1

    添加数据后如果需要返回新增数据的自增主键,可以使用getLastInsID方法:

    Db::name('user')->insert($data);

    $userId = Db::name('user')->getLastInsID();

    或者直接使用insertGetId方法新增数据并返回主键值

    $data = ['foo' => 'bar', 'bar' => 'foo'];

    $id = db('user')->insertGetId($data);

    添加多条数据

    $data = [

        ['foo' => 'bar', 'bar' => 'foo'],

        ['foo' => 'bar1', 'bar' => 'foo1'],

        ['foo' => 'bar2', 'bar' => 'foo2']];

    Db::name('user')->insertAll($data);

    助手函数

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

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

    更新数据表中的数据

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

    如果数据中包含主键,可以直接使用:

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

    更新某个字段的值

    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('user')->where('id',1)->update(['name' => 'thinkphp']);

    // 更新某个字段的值

    db('user')->where('id',1)->setField('name','thinkphp');

    // 自增 score 字段

    db('user')->where('id', 1)->setInc('score');

    // 自减 score 字段

    db('user')->where('id', 1)->setDec('score');

    删除数据表中的数据

    // 根据主键删除

    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();

    助手函数

    // 根据主键删除

    db('user')->delete(1);

    // 条件删除    

    db('user')->where('id',1)->delete();

    查询方法

    where方法

    $where[‘id’]=[‘>=’,2];

    db(‘admin’)->where($where)->select();

    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('id','eq',100);

    where('id','=',100);

    where('id','neq',100);

    where('id','<>',100);

    where('id','gt',100);

    where('id','>',100);

    where('id','egt',100);

    where('id','>=',100);

    where('id','lt',100);

    where('id','<',100);

    where('name','like','thinkphp%');

    where('id','between','1,8');

    where('id','not in','1,5,8');

    链式操作

    数据库提供的链式操作方法,可以有效的提高数据存取的代码清晰度和开发效率。

    where、order和limit方法就被称之为链式操作方法,除了select方法必须放到最后一个外,链式操作的方法调用顺序没有先后。

    Db::table('think_user')

        ->where('status',1)

        ->order('create_time desc')

        ->limit(10)

        ->select();

    系统支持的链式操作方法有:

    所有的连贯操作都返回当前的模型实例对象(this),其中带*标识的表示支持多次调用。

    聚合查询

    db(‘table’)->count();

    db(‘table’)->max(‘score’);

    page分页;

    join多表联合查询

    join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。

    INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行

    LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

    RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

    FULL JOIN: 只要其中一个表中存在匹配,就返回行

                           

  • 相关阅读:
    react native mapbox MarkView只显示一个子组件问题
    react native mapbox 截图压缩(@react-native-mapbox-glmaps)
    @react-native-mapbox-gl/maps语言插件汉化不完善问题
    SQLSERVER优化
    springboot+react整合
    sqlserver求小数取位
    C#中Math.Round() 的真实含义
    Java Nio学习总结(一)
    Linq去重(自定义字段)
    WPF学习记录(一):布局
  • 原文地址:https://www.cnblogs.com/mark645524126/p/13745121.html
Copyright © 2011-2022 走看看