ThinkPHP5.1 查询所有数据并排除某些字段数据
2023-03-29 23:03:03
236
{{single.collect_count}}

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 * @parammixed $field * @paramboolean $except是否排除 * @paramstring$tableName 数据表名 * @paramstring$prefix字段前缀 * @paramstring$alias 别名前缀 * @return $this */public function field($field, $except = false, $tableName = '', $prefix = '', $alias = ''){}

官方参考资料:field

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}