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

注:这是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’);
U s e r − > w h e r e ( ′ i d = 5 ′ ) − > s e t F i e l d ( User-> where('id=5')->setField( 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’);
d a t a = ​ D b : : t a b l e ( ′ t h i n k u s e r ′ ) ​ − > f i e l d ( ′ i d , t i t l e , k e y w o r d ′ ) − > w h e r e ( data=​Db::table('think_user')​ ->field('id,title,keyword') ->where( data=Db::table(thinkuser)>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);
————————————————

原文链接:https://blog.csdn.net/minshiwang/article/details/78621727

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值