注:这是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.youkuaiyun.com/minshiwang/article/details/78621727