thinkphp field是什么意思

如题所述

做数据库查询的时候,比较经常用到这两个,总是查手册,记不住,现在把它总结下,希望以后用的时候不查手册了。

不管是用select 查询数据集,还是用find 查询数据,常配合连贯操作where、field、order等一起使用。

field():用于定义要查询的字段(支持字段排除)

用法:field($field , $except=false)

参数:$field —— 字段名,要查询的字段名;

$except —— 是否排除,默认为false,省略不写;如果为true,表示定义的字段为数据表中排除$field参数定义之外的所有字段

返回值:当前的模型实例

注:不调用field方法,默认返回所有字段,和field( '*' )等效。

需要显式的传入所有的字段,可以使用下面的方法:

$model -> field(true) ->select() ;

但是建议只获取需要显式的字段名,或者采用字段排除方式来定义,例如:

$model ->field( 'status' , true) ->select(); //获取除了status之外的所有字段

$model ->field( 'id','nickname')->select(); //获取id和nickname字段

getField():用于查询某个字段的值

用法:getField($field, $sepa=null)

参数:$field —— 要获取的字段字符串(多个用逗号分隔)

$sepa —— 字段数据间隔符号,如果是 NULL返回数组为数组。默认为null

返回值:如果查询结果为空返回null,如果field是一个字段则返回该字段的值,如果field是多个字段,返回数组。数组的索引是第一个字段的值,sepa为null则返回二维数组。

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

$User = M("User"); // 实例化User对象
// 获取ID为3的用户的昵称
$nickname = $User->where('id=3')->getField('nickname');
示例:如果需要返回数组:
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-04-14
最新的SVN版本增加了field(true)用法支持,和field('*')用法的区别在于field(true)是显式的获取数据表的全部字段,举例说明:think_data表有id,name,data,status 4个字段,我们使用:

$model = M('Data');

$model->field('*')->select();

// 或者

// $model->select();

复制代码

最后生成的SQL语句是

SELECT * FROM think_data

复制代码

而如果使用

$model->field(true)->select();

复制代码

的话,生成的SQL语句则是:

SELECT id,name,data,status FROM think_data

复制代码

也许有人认为不是一样的结果么,O(∩_∩)O~对于高性能的设计来说 就有区别。

新版还增加了字段排除的用法,例如:

$model->field('status,name',true)->select();

复制代码

表示排除数据表中的status和name字段,最后生成的SQL语句就变成了:

SELECT id,data FROM think_data
相似回答
大家正在搜