ThinkPHP3.2.3创建数据时,如果在create方法之前调用field方法,则表示只允许创建指定的字段数据,其他非法字段将会被过滤,例如:
$data['name'] = 'thinkphp'; $data['email'] = 'thinkphp@gmail.com'; $data['status'] = 1;$data['test'] = 'test'; $User = M('User'); $data = $User->field('name,email')->create($data); dump($data);
输出结果为:
array (size=2) 'name' => string 'thinkphp' (length=8) 'email' => string 'thinkphp@gmail.com' (length=18)
最终只有name
和email
字段的数据被允许写入,status
和test
字段直接被过滤了,哪怕status也是数据表中的合法字段。
如果我们有自定义模型类,对于数据新增和编辑操作的话,我们还可以直接在模型类里面通过设置insertFields
和updateFields
属性来定义允许的字段,例如:
namespace Home\Model; use Think\Model; class UserModel extends Model{ protected $insertFields = 'name,email'; // 新增数据的时候允许写入name和email字段 protected $updateFields = 'email'; // 编辑数据的时候只允许写入email字段 }