一.数据创建
在数据库添加等操作之前,我们首先需要对数据进行创建。何为数据创建,就是接受提
交过来的数据,比如表单提交的POST(默认)数据。接受到数据后,还可以对数据进行有
效的验证、完成、生成等工作。
index.htnl
//根据表单提交的POST数据,创建数据对象
$user = M('User');var_dump($user->create());
PS:这里create()方法就是数据创建,数据的结果就是提交的POST数据的键值对。
特别注意的是:提交过来的字段和数据表字段是对应的,否则无法解析。
display();
}
public function create(){
$user = M('User');
var_dump($user->create());
}
}
//通过数组手工获取数据,覆盖提交的
$user= M('User');
$data['user'] = $_POST['user'];
$data['email'] = $_POST['email'];
$data['date'] = date('Y-m-d H:i:s'); //和数据表对应,否则无效var_dump($user->create($data));
//通过对象手工获取数据,覆盖提交的
$user= M('User');
$data= new \stdClass();
$data->user = $_POST['user'];
$data->email =$_POST['email'];$data->date =date('Y-m-d H:i:s'); var_dump($user->create($data));
//默认是$_POST,传递$_GET修改
$user = M('User'); var_dump($user->create($_GET));//"
create()方法可以传递第二个参数,将要操作的模式,有两种:Model::MODEL_INSERT
和Model::MODEL_UPDATE,即新增和修改。当没有指定的时候,系统会根据数据源是否包
含主键来自动判断,如果包含主键,则就是修改操作。
//设置将要新增操作
$user= M('User');
var_dump($user->create($_POST, Model::MODEL_INSERT));
create()方法的内部工作分为9步:
1.获取数据源(默认是POST);
2.验证数据合法性(非数据或对象会过滤),失败则返回false;
3.检查字段映射;
4.判断数据状态(新增还是修改);
5.数据自动验证,失败则返回false;
6.表单令牌验证,失败则返回false;
7.表单数据赋值(过滤非法字段和字符串处理);
8.数据自动完成;
9.生成数据对象(保存在内存)。
create()方法可以配合连贯操作配合数据创建,支持的连贯操作有:
1.field,用于定义合法的字段;
2.validate,用于数据自动验证;
3.auto,用于数据自动完成;
4.token,用于令牌验证。
//限制可操作的字段
$user= M('User');
var_dump($user->field('user')->create());//只显示user
//在模型类里限制字段 //控制器用大D
class UserModel extends Model { protected $insertFields = 'user'; protected $updateFields= 'user'; }
二.数据写入
数据写入使用的是add()方法。
//新增一条数据
$user= M('User');
$data['user'] = '名字';
$data['email'] = '[email protected]';
$data['date'] =date('Y-m-d H:i:s'); $user->add($data);
//结合create()方法
index.htnl
$user= M('User');
$data= $user->create();//create交给data 再把时间交个$data
$data['date'] = date('Y-m-d H:i:s');
$user->add($data);
add()方法支持的连贯操作有:1.table,定义数据表名称;
2.data,指定要写入的数据对象;
3.field,定义要写入的字段;
4.relation,关联查询;
5.validate,数据自动验证;
6.auto,数据自动完成;
7.filter,数据过滤;
8.scope*,命名范围;
9.bind,数据绑定操作;
10.token,令牌验证;
11.comment,SQL注释;
//使用data连贯方法
$user= M('User');
$data= $user->create();
$data['date'] =date('Y-m-d H:i:s'); $user->data($data)->add();
//data连贯方法 支持字符串、数组、对象
$user= M('User');
$data= 'user=小明[email protected]&date='.date('Y-m-d H:i:s');$user->data($data)->add();