数据库查询构造器中10个最常用方法-2018年5月24日18点
程序员文章站
2024-01-03 18:41:34
...
笔记:删除和更新需基于条件,不然很危险,insertGetId() == insert() + getLastInsID[],
实例:对数据库php里staff表的CURD操作,
配置数据库,在 controller控制器层创建Query控制器(Query.php),并引入Db,创建Query类
<?php namespace app\index\controller; use think\Db; class Query { //读操作返回的都是二维数组,没有满足条件的记录,返回的是一个空数组、 //写操作返回的是受影响的记录数,如果没有返回0 public function find() { //查询单条记录数 $res = Db::table('staff') // ->field('name,sex,salary') ->field(['name'=>'姓名','sex','salary']) ->where('staff_id','=',10) //where(字段、表达式、条件) ->find(); dump($res); } public function select() { //查询多条记录 $res = Db::table('staff') ->field(['name'=>'姓名','sex,salary']) // ->where('salary > 3000') ->where('salary', '>',3000)//表达式 ->order('salary', 'DESC') ->select(); dump($res); } public function insert() { //新增单条记录:insert() $data=[ 'name'=>'胡三刀', 'sex'=>0, 'age'=>32, 'salary'=>6200 ]; // $num = Db::table('staff')->insert($data); // $id = Db::getLastInsID(); // return $num? '添加成功,id='.$id:'没有记录被添加'; //data($data):将要处理的数据打包到$option[] //insertGetId() == insert() + getLastInsID[] // $id = Db::table('staff')->insertGetId($data); // return $id? '添加成功,id='.$id : '没有记录被添加'; // $num = Db::table('staff')->data($data)->insert(); // $id = Db::getLastInsID(); // return $num? '添加成功,id='.$id:'没有记录被添加'; // // 新增多条记录insertAll() $data = [ ['name'=>'刘备','sex'=>0,'age'=>45,'salary'=>9000], ['name'=>'关羽','sex'=>0,'age'=>42,'salary'=>8000], ['name'=>'张飞','sex'=>0,'age'=>38,'salary'=>8000], ]; $num = Db::table('staff')->data($data)->insertAll(); return $num? '添加成功,新增了'.$num.'条记录':'没有记录被添加'; } public function update() { //更新操作必须是基于前置查询,不允许无条件更新 ,也是一个终极方法 //将工资小于等于4000的员工加薪1000 // $num = Db::table('staff') // ->data(['salary'=>Db::raw('salary+1000')]) // ->where('salary','<=',4000) // ->update(); $num = Db::table('staff') ->update(['sex'=>1,'staff_id'=>17]); return $num? '更新成功'.$num.'条记录':'没有记录被更新'; } public function delete() { //删除也必须基于前置查询,不允许无条件删除 //删除用的是delete() // $num = Db::table('staff')->delete(26); // $num = Db::table('staff')->delete([18,19,25]); $num = Db::table('staff')->where('staff_id',19)->delete(); // $num = Db::table('staff')->where(true)->delete();//可以将当前表清空 return $num ? '删除成功'.$num.'条记录':'没有记录被删除'; //删除数据是一个危险的操作,建议使用软删除来实现,用更新来模拟删除 } } //提示:在实际的开发过程中,尽可能不要在控制器中操作数据库,而是采用模型来实现