ThinkPHP总结
D和M的区别主要在于
M方法不需要创建模型类文件,M方法不会读取模型类,所以默认情况下自动验证是无效的,但是可以通过动态赋值的方式实现
D方法必须有创建模型类,如果找不到,就等同于M
数据创建
//根据表单提交的POST数据,创建数据对象 $user = M('User'); var_dump($user->create());
注:
create()方法就是数据创建,数据的结果就是提交的 POST 数据的键值对。提交过来的字段和数据表字段是对应的,否则无法解析。
create(参数1,参数2)
参数1-----数据
参数2----- Model::MODEL_INSERT和 Model::MODEL_UPDATE
create()方法的内部工作分为 9 步:
1.获取数据源(默认是 POST) ; 2.验证数据合法性(非数据或对象会过滤) ,失败则返回 false; 3.检查字段映射; 4.判断数据状态(新增还是修改) ; 5.数据自动验证,失败则返回 false; 6.表单令牌验证,失败则返回 false; 7.表单数据赋值(过滤非法字段和字符串处理) ; 8.数据自动完成; 9.生成数据对象(保存在内存) 。
支持的连贯操作有:
1.field,用于定义合法的字段; 2.validate,用于数据自动验证; 3.auto,用于数据自动完成; 4.token,用于令牌验证。
限制可操作的字段
1.用field
2.在模型中
class UserModel s extends Model { protected $insertFields = 'user'; protected $updateFields = 'user'; }
数据写入
add()
支持的连贯操作有
1.table,定义数据表名称; 2.data,指定要写入的数据对象; 3.field,定义要写入的字段; 4.relation,关联查询; 5.validate,数据自动验证; 6.auto,数据自动完成; 7.filter,数据过滤; 8.scope*,命名范围; 9.bind,数据绑定操作; 10.token,令牌验证; 11.comment,SQL 注释;
数据读取
1.where,查询或更新条件; 2.table,要操作的数据表名称; 3.alias,数据表别名; 4.field,查询字段; 5.order,结果排序; 6.group,查询分组; 7.having,分组再查询; 8.join,多表链接查询; 9.union,合并 SELECT; 10.distinct,取唯一值; 11.lock,锁; 12.cache,缓存; 13.relation,关联查询; 14.result,数据转换; 15.scope,命名范围; 16.bind,数据绑定操作; 17.comment,SQL 注释。
find()获取第一条数据
select()获取所有数据
$user = M('User'); var_dump($user->find()); //获取第一天数据
//显示默认所有数据 var_dump($user->select()); //可以传递数组形式的 SQL
//获取第一条user字段的值 var_dump($user->getField('user'));
//获取所有user字段的值 var_dump($user->getField('user', true));
//传递多个字段,获取所有 var_dump($user->getField('user,email'));
//id冒号分隔 var_dump($user->getField('id,user,email',':'));
//限制2条数据 var_dump($user->getField('id,user,email',2));
数据更新
save()
支持的连贯操作
1.where,查询或更新条件; 2.table,要操作的数据表名称; 3.alias,数据表别名; 4.field,查询字段; 5.order,结果排序; 6.lock,锁; 7.relation,关联查询; 8.scope,命名范围; 9.bind,数据绑定操作; 10.comment,SQL 注释。
//修改某一个值 $user = M('User'); $map['id'] = 1; $user->where($map)->setField('user', '蜡笔大新');
//统计累计,累加累减 $map['id'] = 1; $user->where($map)->setInc('count',1); //累加,setDec 累减
数据删除
delete()
支持的连贯操作
1.where,查询或更新条件; 2.table,要操作的数据表名称; 3.alias,数据表别名; 4.order,结果排序; 5.lock,锁; 6.relation,关联查询; 7.scope,命名范围; 8.bind,数据绑定操作; 9.comment,SQL 注释。
ActiveReocrd 模式
//修改一条数据 $user = M('User'); $user->find(1); $user->user = '蜡笔老新'; $user->save(); //删除当前找到的数据 $user->find(11); $user->delete();