tp一次性插入表单所有数据 或更新表单数据

时间:2022-09-20 20:10:36

创建数据对象 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 自动填充》。