- ASP.NET 母版页和内容页中的事件
- SEO优化之关键词的布局技巧
- CSS 怎样用css设置超链接字体的不同颜色
- 怎么查看nodejs安装路径
- 用JavaScript(js)对时间格式化
- C# 类型转换
- 一套.net窗体身份验证方案(解决了防止用户重复登陆,session超时等问题)
- 母版页中对控件ID的处理
- seo在电子商务中的作用
- 石家庄网站建设基本流程
邮箱:
手机:15383239821
ThinkPHP中 inc和dec方法
ThinkPHP6的inc和dec方法是老版本setInc和setDec的替代方法,用法和之前基本上一致,下面简单记录下用法:
1、inc方法将数字字段值增加,如:
public function update() {
$result = M("User")->where('uid = 2')->inc('score', 3);
if ($result !== false) {
echo '数据更新成功!';
} else {
echo '没更新任何数据!';
}
}
最终执行的SQL语句:
UPDATE user SET score=score+3 WHERE uid=2
inc方法中第一个参数为要修改的字段名称,后一个参数为数字字段增加的值,如果省略则默认增加1 。
2、dec方法将数字字段值减少,如:
public function update() {
$result = M("User")->where('uid = 2')->dec('score', 3);
if ($result !== false) {
echo '数据更新成功!';
} else {
echo '没更新任何数据!';
}
}
最终执行的SQL语句:
UPDATE user SET score=score-3 WHERE uid=2
dec方法中第一个参数为要修改的字段名称,后一个参数为数字字段减少的值,如果省略则默认减少1
inc与dec() 方法也支持连贯操作,从而可以构造更加复杂的更新条件。
3、举例
可以使用inc/dec方法自增或自减一个字段的值( 如不加第二个参数,默认步长为1)。
// score 字段加 1
Db::table('think_user')
->where('id', 1)
->inc('score')
->update();
// score 字段加 5
Db::table('think_user')
->where('id', 1)
->inc('score', 5)
->update();
// score 字段减 1
Db::table('think_user')
->where('id', 1)
->dec('score')
->update();
// score 字段减 5
Db::table('think_user')
->where('id', 1)
->dec('score', 5)
->update();
inc/dec方法可以多次调用更新多个字段,如果你每次只需要更新一个字段,也可以使用setInc/setDec方法。
// 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);
最终生成的SQL语句可能是:
UPDATE `think_user` SET `score` = `score` + 1 WHERE `id` = 1
UPDATE `think_user` SET `score` = `score` + 5 WHERE `id` = 1
UPDATE `think_user` SET `score` = `score` - 1 WHERE `id` = 1
UPDATE `think_user` SET `score` = `score` - 5 WHERE `id` = 1
4、延迟更新
对于数据表的统计字段,还提供了延迟更新方法,在setInc/setDec方法的第三个参数传入延迟更新的时间(秒)。
// 阅读统计字段延迟600秒写入
Db::table('think_blog')
->where('id', 1)
->setInc('read_count', 1, 600);
// 用户关注数延迟600秒写入
Db::table('think_user')
->where('id', 1)
->setInc('attention', 1, 600);
-
2013-10-28IIS下的网站,在外网访问需要输入用户名密码 解决方案
-
2020-08-15你需要什么样的建站?模板建站和定制建站?
-
2022-03-11C#读取excel数据到datatable中
-
2013-04-23ASP.NET - FileUpload Web 服务器控件概述(上)
-
2010-11-08跨站脚本攻击(XSS)FAQ
