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: 只要其中一个表中存在匹配,就返回行

                       

原文地址:https://www.cnblogs.com/mark645524126/p/13745121.html