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