-
【增删改查之 改】 方法: $db = Db::name('user') 1. update一般使用:$db->where(['id'=>1])->update(['username'=>'hujianlun','email'=>'hujianlun@qq.com']); // 返回影响记录行数,需要配合where使用。可修改多个字段。 2. setField改单独字段:$db->where(['id'=>3])->setField(['username'=>'hujianlun3']); // 返回影响记录行数,需要配合where使用。只能改一个字段。 3. setInc自增:$db->where(['id'=>3])->setInc('num',5); //返回影响记录行数。如果没有第二个参数,则每次执行,就指定字段的值自增1.如果有第二个参数,则自增第二个参数的数量。 4. setDec自减:和inc差不多的规则。查看全部
-
Db类连接
查看全部 -
->where('字段名','表达式','值')
->whereOr('字段名','表达式','值')
$db = Db::name('user');
$sql = $db
->where('id','in','1,2,3')
->whereOr('username','eq','morankin')
->whereOr('num','lt','10')
->where('email','morankin@qq.com')
->buildSql();
以上其实就是定义了一个筛选条件但是老师给的这个其实筛选条件没有什么必要 and 在我这里认为比or是 小一级的(后面会解释) , 条件满足id 为1,2,3,和email 为Morankin@qq.com 或者满足username 为morankin的 再或者 满足 num 小于10的
我任务这样其实我们就有了3个条件
一个为(id and email )一个为username 一个为num
其实怎么理解都可以,我这个我比较好理解罢了 但是这样的筛选条件其实没有必要,也可以说无意义的 毕竟是给大家练习的
不区分大小写
EQ =
NEQ <>
LT <
ELT <=
GT >
EGT >=
BETWEEM BETWEEN * AND *
NOTBETWEEN NOTBETWEEN * AND *
IN IN (*,*)
NOTIN NOT IN (*,*)
查看全部 -
# delete 返回影响的行数 对数据库进行删除 如果想要删除的为主键 可以不需要加where 直接在delete(添加主键id值)
DB::name(user) ->where(['id'=>1])->delete();
DB::name(user)->delete(1);
查看全部 -
update() 返回影响的行数 可以影响一个数组
setField() 返回影响的行数 只能影响一个字段
setInc() 返回影响的行数 每次递增 默认递增值为1
setDec() 返回影响的行数 每次递减 默认递增值为1
查看全部 -
value 返回一条记录 返回的结果并且是字条记录的某个字段
如果结果不存在返回 NULL
Db::table('lx1_user')->where(['id'=>'2'])->value('username');
查看全部 -
find 返回一条记录 返回的结果是一个一维数组 而其中的where 是为了更准确的查找到所需要的记录 就是可以添加一个字段名 比如你想要id为1的记录或者是username为xxx的
->where(['字段名'=>'字段名的数据'])
Db::table('lx1_user')->where(['id'=>'10']) -> find();
查看全部 -
源生方法的数据插入数据表
Db::execute("insert into lx1_user set username=?,password=?,email=?",[
'morankin',md5('123'),'morankin@qq.com'
]);
?是给数据类名一个位置变量
后面添加数据也是按照前面 ? 的先后排列的
数组第一个单元替换前面查询语句的第一个问号,第二个单元替换第二个问号,以此类推
查看全部 -
全局添加更新时间需要在表中新建create_time和update_time字段,配置文件中设置“auto_timestamp"=>true,一般不开启这个功能,否则表中不存在该字段时会报错,真正删除需要把destroy方法或delete方法的第二个参数设置为true
use think\Model; use traits\model\SoftDelete; class User extends Model{ use SoftDelete;使用软删除 protected $autoWriteTimestamp = true;//开启自动更新时间 protected $createTime = false;//设置为false代表不使用创建时间 protected $updateTime = "update_at";//设置自定义更新时间的字段 protected $deleteTime = "delete_at";//设置自定义的软删除字段}
查看全部 -
set+字段名+Attribute
auto (新增及更新的时候自动完成的属性数组)
insert(仅新增的时候自动完成的属性数组)
update(仅更新的时候自动完成的属性数组)
查看全部 -
可利用toArray获取改后数据
可利用getData获取原始数据查看全部 -
count User::count(); 获取数据总条数
max User::max('字段名') 获取指定字段值的最大值
sum User::sum('字段名') 获取指定字段值的总和
avg User::avg('字段名') 获取指定字段值的平均值
min User::min('字段名') 获取指定字段值的最小值
都可以和where条件合作
查看全部 -
常用链式操作
原理:Db类的链式方法返回Db对象,可以继续使用Db对象的这些方法对查询数据进行一些条件构造以及范围的选择和排序等等;
$res=$db
->where('id','>',5) 条件ID>5
->field('username','id') 只搜索username和id两个字段
->order('id DESC') order排序 id DESC id倒序
->limit(3,7) limit截取 3,7 从3开始截取7个
->page(3,5) page(m,n)多用于分页//limit分页limit((m-1)*n,n)== m:当前页数,n:每页多少条数据
->group('`group`') //group是关键字,这里用``进行转义
->select(); select( ); 搜索
var_dump($res);
注意:order对group是不起作用的;就是在执行的group进行分组的时候,并不是在你order排序的基础上进行的;
group('字段'),他会根据字段的值为分类标准进行分类,比如字段值为1的单独查出来,字段值为1的单独查出来;
查看全部 -
软删除引入
traits\model\SoftDelete;
use SoftDelete;
查看全部 -
一般更新不推荐使用 update 静态方法和 saveAll 推荐使用 where+update 或者 save+(where条件 or 闭包函数)
查看全部
举报