创建数据对象 create()
除了手动构造入库的数据集之外,ThinkPHP 还提供了自动创建数据对象的 create() 方法。create() 方法将自动收集提交的表单数据并创建数据对象而无需人工干预,这在表单数据字段非常多的情况下更具优势。
create() 创建数据对象后,将自动收集提交过来的表单数据。而表单数据可能需要经过一定加工(例如将密码加密)才能写入数据表,所以可以对数据对象的成员属性值根据进行修改或添加去除等。
public function add(){ // var_dump($_POST); // die(); $product = D('product'); if($product->create()) { $product->create_time = date('Y-m-d H:i:s',time()); $result = $product->add(); if($result) { $this->success('操作成功!'); }else{ $this->error('写入错误!'); } }else{ $this->error($product->getError()); } }
更新操作时,注: 在静态页面表单中加 隐藏ID号 ,或 链接传来的id,用于更新指定ID号记录
//更新回复内容 public function update(){ $customer_reply = M('customer_reply'); /* $data['content'] = $_POST['content']; $result = $customer_reply->where('id='.$_POST['id'])->save($data); // 根据条件保存修改的数据 if($result){ $this->success('操作成功!'); }else{ $this->error('写入错误!'); }*/ if($customer_reply->create()) { $result = $customer_reply->save(); if($result) { $this->success('操作成功!'); }else{ $this->error('写入错误!'); } }else{ $this->error($customer_reply->getError()); } }
提示:create() 创建的数据对象存放于内存,在执行入库动作(add() 或 save())之前,都可以进行修改。
在上面的例子里,create()方法 的行为和 date()方法 是一致。但 date() 方法只是简单的创建数据对象,但 create() 方法还具备:
- 令牌验证
- 数据自动验证
- 字段映射支持
- 字段类型检查
- 数据自动完成
等各种高级的数据功能,要完成这些高级数据模型功能,需要使用 D方法 实例化数据模型。ThinkPHP 提供了各种验证与填充规则供调用,具体可参见《ThinkPHP 自动验证》与《ThinkPHP 自动填充》。