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