做ThinkPHP应该经常用到getFieldfieldfindselect这种查询
可是有时我们想用getField查询出相关的字段,但是只能查出一条,而我们想要的是很多条,或是所有数据放到一个数组里面,
在“ThinkPHP3.0_完全开发手册.pdf”中没有相关的记录,
后来查看在线文档发现getField可以获取一个字段,并且是数组形式返回的!
用法:getField('id', true);
如果要读取某个字段的值,可以使用getField方法
getField 查询某个字段的值
用法 getField($field,$sepa=null)
参数
field(必须):要获取的字段字符串(多个用逗号分隔)
sepa(可选):字段数据间隔符号,如果是 NULL返回数组为数组。默认为null。
回调接口 查询后 _after_find(&$result,$options)
返回值
如果查询结果为空返回null
如果field是一个字段则返回该字段的值
如果field是多个字段,返回数组。数组的索引是第一个字段的值,sepa为null则返回二维数组。
相关方法 通常配合连贯操作where、limit、order等一起使用
示例如下:
$User = M("User"); // 实例化User对象
// 获取ID为3的用户的昵称
$nickname = $User->where('id=3')->getField('nickname');
当只有一个字段的时候,默认返回一个值。
如果需要返回数组,可以用:
$this->getField('id',true); // 获取id数组
如果传入多个字段的话,默认返回一个关联数组:
$User = M("User"); // 实例化User对象
// 获取所有用户的ID和昵称列表
$list = $User->getField('id,nickname');
返回的list是一个数组,键名是用户的id, 键值是用户的昵称nickname。
如果传入多个字段的名称,例如:
$list = $User->getField('id,nickname,email');
返回的是一个二维数组,类似select方法的返回结果,区别的是这个二维数组的键名是用户的id(准确的说是getField方法的第一个字段名)。
如果我们传入一个字符串分隔符:
$list = $User->getField('id,nickname,email',':');
那么返回的结果就是一个数组,键名是用户id,键值是 nickname:email的输出字符串。
getField方法的sepa参数还可以支持限制数量,例如:
$this->getField('id,name',5); // 限制返回5条记录
$this->getField('id',3); // 获取id数组 限制3条记录
可以配合使用order方法使用。
更多的还是去官方学习吧!
文章引用:
http://doc.thinkphp.cn/manual/curd.html