thinkPhp3.2 field和getField区别

来源:互联网 发布:淘宝达人大v怎么认证 编辑:程序博客网 时间:2024/06/07 15:55
    在做数据库查询的时候,经常用到field、getfield,今天就做一下总结。希望以后能记住。。

   field()用于定义要查询的字段(支持字段排除)
       用法 : field ($field ,$except = false)
       参数 : $field ---   字段名,要查询的字段名;
                   $except ---  是否排除,默认是false,一般省略不写;如果是true,表示定义的字段为数据表中排除$filed参数定义之外的所有字段
      
      注 :不调用field方法,默认返回所有的字段,和field(*) 等效。
      例如:
      $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则返回二维数组。

     示例:当只有一个字段的时候,默认返回一个值。
     //获取id为3的用户昵称
     $nickname = $model->where('id=3')->getField('nickname');

     示例:如果需要返回整个列的数据
     $model -> getField('id',true);      //获取id数组
     //返回数据格式如array(1,2,3,4,5)一维数组,其中value就是id列的每行的值

    示例 : 如果传入多个字段的话,默认返回一个关联数组
    $model -> getField ('id,nickname'); 
    //两个字段的情况下返回的是array(`id`=>`nickname`)的关联数组,以id的值为key,nickname字段值为value

     $model -> getField('id,nickname,age');
     //返回的数组格式是array(`id` => array(`id`=> value , `nickname` => value , `email` => value) )是一个二维数组,类似于将select()方法的结果遍历将id的值设为数组key

     //如果传入一个字符串分隔符
     $model -> getField('id,nickname,age',':');
    //返回的结果就是一个数组,键名是用户id,键值是nickname : age的输出字符串

    //getField方法还可以支持限制数量
   $model -> getField('id , nickname',5);
   // 返回数组格式 array(`id` => `nickname`)
   $model -> getField('id',5);
   //返回数组格式array(1,2,3,4,5);