ThinkPHP5.1 查询所有数据并排除某些字段数据


在使用 thinkphp5.1 的时候,难免会碰到这样的场景。 我要查询数据库某张表的所有数据,但可能要排除个别某些字段

当然,良好的习惯是将所有的字段都罗列出来,并将其中个别不要的字段删除即可 。但如果字段数量非常多时,恐怕身为程序员的我们内心是崩溃的。

但是 ,若是我们想偷偷懒,应该怎么做?

解决方法如下:

还是使用 field 字段:

字段排除


如果我希望获取排除数据表中的content字段(文本字段的值非常耗内存)之外的所有字段值,我们就可以使用field方法的排除功能,例如下面的方式就可以实现所说的功能:

Db::table('think_user')->field('content',true)->select();

则表示获取除了content之外的所有字段,要排除更多的字段也可以:

Db::table('think_user')->field('user_id,content',true)->select();
//或者用
Db::table('think_user')->field(['user_id','content'],true)->select();

注意的是 字段排除功能不支持跨表和join操作。

很显然, field 字段第二个参数是排除某字段,默认 false 不排除,设置为 true 即可排除:

/**
     * 指定查询字段 支持字段排除和指定数据表
     * @access public
     * @param  mixed   $field
     * @param  boolean $except    是否排除
     * @param  string  $tableName 数据表名
     * @param  string  $prefix    字段前缀
     * @param  string  $alias     别名前缀
     * @return $this
     */
    public function field($field, $except = false, $tableName = '', $prefix = '', $alias = ''){}

官方参考资料:field

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐