版权声明:本文为ywcmoon原创文章,未经允许不得转载。 https://blog.csdn.net/qq_39251267/article/details/82219314
field
方法主要目的是标识要返回或者操作的字段,可以用于查询和写入操作
查询操作
指定字段(且可设置别名)
Db::table('think_user')->field('id,nickname as name')->select();
相当于SELECT id,nickname as name FROM table
使用SQL函数
Db::table('think_user')->field('id,SUM(score)')->find();
相当于SELECT id,SUM(score) FROM table
使用数组参数
field方法的参数支持数,并可为字段设置别名:
Db::table('think_user')->field(['id','nickname'=>'name'])->select();
对复杂字段,数组的优势:
Db::table('think_user')->field(['id','concat(name,"-",id)'=>'truename','LEFT(title,7)'=>'sub_title'])->select();
获取所有字段
//以下都可获取所有字段
Db::table('think_user')->select(); //不调用field方法
Db::table('think_user')->field('*')->select();
Db::table('think_user')->field(true)->select(); //显式调用所有字段
- 字段排除
//获取除了content之外的所有字段
Db::table('think_user')->field('content',true)->select();
//排除更多的字段
Db::table('think_user')->field('user_id,content',true)->select();
//或者用数组
Db::table('think_user')->field(['user_id','content'],true)->select();
注意:字段排除功能不支持跨表和join操作
写入操作
- 字段合法性检测
field方法结合数据库的写入方法使用就可以完成表单提交的字段合法性检测
Db::table('think_user')->field('title,email,content')->insert($data);
即表示表单中的合法字段只有title,email和content字段,其他方式提交的字段都会直接屏蔽。
在开启数据表字段严格检查的情况下,提交了非法字段会抛出异常,可以在数据库设置文件中设置
// 关闭严格字段检查
'fields_strict' => false,
V5.0.17+
版本开始,系统还提供了fieldRaw
方法,用于更安全的指定字段,尤其是使用了SQL函数的情况。
Db::table('think_user')->fieldRaw('title,email,content,max(score) as max_score')->insert($data);