TP框架中操作某个字段getField、setField、setInc、setDec、field

23 篇文章 0 订阅

注:这是TP3操作      TP5在下面

读取某个字段的值,使用getField方法

使用示例:

$User = M("User"); // 实例化User对象
$nickname = $User->where('id=3')->getField('nickname'); // 获取ID为3的用户的昵称 

当只有一个字段的时候,默认返回一个值。

 

如果需要返回数组,可以用:

 

$this->getField('id',true); // 获取id数组

如果传入多个字段的话,默认返回一个关联数组(不过不推荐用这个方法):

$User = M("User"); // 实例化User对象
$list = $User->getField('id,nickname');// 获取所有用户的ID和昵称列表 

返回的list是一个数组,键名是用户的id, 键值是用户的昵称nickname。

getField方法的sepa参数还可以支持限制数量,例如:

$this->getField('id,name',5); // 限制返回5条记录
$this->getField('id',3); // 获取id数组 限制3条记录

只是更新个别字段的值,可以使用setField方法。

使用示例:

$User = M("User"); // 实例化User对象
$User-> where('id=5')->setField('name','ThinkPHP');// 更改用户的name值

setField方法支持同时更新多个字段,只需要传入数组即可,例如:

$User = M("User"); // 实例化User对象
$data = array('name'=>'ThinkPHP','email'=>'ThinkPHP@gmail.com');
$User-> where('id=5')->setField($data);// 更改用户的name和email的值

对于统计字段(通常指的是数字类型)的更新,系统还提供了setInc和setDec方法。

$User = M("User"); // 实例化User对象
$User->where('id=5')->setInc('score',3); // 用户的积分加3
$User->where('id=5')->setInc('score'); // 用户的积分加1
$User->where('id=5')->setDec('score',5); // 用户的积分减5
$User->where('id=5')->setDec('score'); // 用户的积分减1

TP5操作

tp5中一个字段符合多个条件的查询,where like or

$where['title'] = array(['like', "%bh%"],['like',"%nk%",'or');
$data=​Db::table('think_user')​
        ->field('id,title,keyword')
        ->where($where)
        ->select();

读取某个字段的值,在查询操作中field方法是使用最频繁的。

Db::table('think_user')->field('id,title,content')->select();

value 方法查询结果不存在,返回 null

 

查询某个字段的值可以也可以用

Db::table('think_user')->where('id',1)->value('name'); // 返回某个字段的值

字段排除

 

如果我希望获取排除数据表中的content字段(文本字段的值非常耗内存)之外的所有字段值,我们就可以使用field方法的排除功能,例如下面的方式就可以实现所说的功能:

Db::table('think_user')->field('content',true)->select();

 

更新某个字段的值:

Db::table('think_user')->where('id',1)->setField('name', 'thinkphp');

 

setField 方法返回影响数据的条数,没修改任何数据字段返回 0

自增或自减一个字段的值:

setInc/setDec 如不加第二个参数,默认值为1
 

Db::table('think_user')->where('id', 1)->setInc('score');// score 字段加 1
Db::table('think_user')->where('id', 1)->setInc('score', 5);// score 字段加 5
Db::table('think_user')->where('id', 1)->setDec('score');// score 字段减 1
Db::table('think_user')->where('id', 1)->setDec('score', 5);// score 字段减 5

延迟更新
setInc/setDec支持延时更新,如果需要延时更新则传入第三个参数
下例中延时10秒,给score字段增加1

 

Db::table('think_user')->where('id', 1)->setInc('score', 1, 10);
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值