1、连接数据库
在config/database.php内修改相应配置参数
值得注意的是,可以添加默认表前缀,如:
prefix => 'tp_'
表示所有的表默认拥有前缀tp_,使用该表时不必再加此前缀
1.1、执行原生sql语句
执行原生sql语句时,支持参数注入
//查询 后面的[]中绑定参数
Db::query("select * from tp_user where id=? and age=?",[1,18]);
//更新
Db::execute("update tp_user set name=:name where age=:age",['name'=>'xiaoming','age']=>20)
//添加
$sql = "insert into tp_user(id,name,age) values(:id,:name:age)";
Db::execute($sql,['id'=>1,'name'=>'xioaming','age'=>18]);
//删除
$sql = "delete from tp_user where id=:id";
Db:execute($sql,['id'=>1]);
1.2、Db类添加数据
有三种方法,分别是
Db::table("tableName");
Db::name("tableName");
db("tablename");
三种方式的使用方法相同,不同的是如果在database.php中设置了表前缀,则除table方法其他的两个方法都不需要在表前面加前缀,二使用db()函数的方式又可以省去引入think\Db命名空间的步骤,所以这里注重介绍最简单的用法
$data = ['id' => 1,'name' => 'xiaoming','age' => '18'];
Db::table('tp_user') -> insert($data);
Db::name('user') -> insert($data);
db('user') -> insert($data);
//如需返回自增主键
$id = db('user') -> insertGetId($data);
//添加多条数据
$data = [
['id' => 1,'name' => 'xiaoming','age' => '18'],
['id' => 2,'name' => 'xiaogang','age' => '19'],
['id' => 3,'name' => 'xiaohong','age' => '20']
];
db('user') -> insertAll($data);
1.3、更新数据
格式为db('表名') -> where('字段名',’运算符‘,‘条件’) -> update(‘sql语句’);
例如:将user表中id为1的用户名改为laowang
db('user') -> where('id','=',1) -> update(['name' => 'laowang']);
//ThinkPHP5.1.7后支持了Db::raw的写法
db('user') -> where('id','=','1') -> update([
click -> Db::raw('click+1');
]);
1.4、删除数据
//根据主键删除
db('user') -> delete(1);
//可以一次删除多个主键
db('user') -> delete([1,2,3]);
//条件删除(其实当运算符为‘=’时可以省略运算符,但还是都写上保险)
db('user') -> where('age','=','18') -> delete();
db('user') -> where('age','>','18') -> delete();
//无条件删除所有数据
db('user') -> delete(true);
一个重要的内容时软删除,软删除的本质不是删掉数据,而是在相应行加上一个标记字段,使得该数据查询时不被显示出来,实际上没有被真正删除
首先要在表中建立一个软删除字段,并设置默认值
useSoftDelete('软删除字段','表示被删除的值');
例如:
user表中设置delete_key字段,默认值为0,改为1时表示被删除
db('user') -> where('id','=','1') -> useSoftDelete('delete_key',1) -> delete();
1.4、查询数据
//查询一条数据
db('user') -> find(1);//find里面填写主键id
//希望找不到该行就抛出异常
db('user') -> where('id',1) -> findOrFail();
//条件查询
db('user') -> where('id','>','1') -> select();
//同样找不到就抛出异常
db('user') -> where('id','>','1') -> selectOrFail();
//查询某个字段
db('uaer') -> where('id','=','1') -> value('name');
//查询某一列
db('user') -> where('id','=','1') -> column('name');
//获取指定数目和排序方式
db('user') -> order('id','desc') -> limit(0,5) -> select();
//聚合查询 和mysql的聚合查询相似
db('user') -> count();
db('user') -> max('age');
db('user') -> avg('age');
db('user') -> where('id',10) -> sum('score');
//批量查询多个字段
//查询条件
$value = [
['name','like','xiao%'],
['age','>',18],
['local','like','shandong%']
];
//进行查询
db('user') -> where($value) -> select();
//闭包查询
$name = 'xiaoming';
db(user) -> where(function($query) user ($name,$id)){
$query -> where('name',$name) -> whereOr('id','>',$id);
} -> select();