zoukankan      html  css  js  c++  java
  • 掌握Thinkphp3.2.0----CURD

    TP-----CURD

     create()创建数据----整理数据

      在数据库添加等操作之前,我们首先需要对数据进行创建。何为数据创建,就是接受提
    交过来的数据,比如表单提交的 POST(默认)数据。接受到数据后,还可以对数据进行有
    效的验证、完成、生成等工作。

    值得注意的是:

      这里 create()方法就是数据创建,数据的结果就是提交的 POST 数据的键值对。
    特别注意的是:提交过来的字段和数据表字段是对应的,否则无法解析。

    手动创建数据---即使是手动创建的数据也得与表字段对应,否则无法被解析

    1 //通过数组手工获取数据,覆盖提交的
    2 $user = M('User');
    3 $data['user'] = $_POST['user'];
    4 $data['email'] = $_POST['email'];
    5 $data['date'] = date('Y-m-d H:i:s'); //和数据表对应,否则无效
    6 var_dump($user->create($data));

     利用对象来覆盖数据

    1 //通过对象手工获取数据,覆盖提交的
    2 $user = M('User');
    3 $data = w new stdClass();
    4 $data->user = $_POST['user'];
    5 $data->email = $_POST['email'];
    6 $data->date = date('Y-m-d H:i:s');

     更改默认POST的方式,为GET

    1 //默认是$_POST,传递$_GET修改
    2 $user = M('User');
    3 var_dump($user->create($_GET));

    提高:

    create()方法可以传递第二个参数, 将要操作的模式, 有两种: Model::MODEL_INSERT
    和 Model::MODEL_UPDATE,即新增和修改。当没有指定的时候,系统会根据数据源是否包
    含主键来自动判断,如果包含主键,则就是修改操作。

    1 //设置将要新增操作
    2 $user = M('User');
    3 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,用于令牌验证。

    1 //限制可操作的字段
    2 $user = M('User');
    3 var_dump($user->field('user')->create());
    4 //在模型类里限制字段
    5 s class UserModel s extends Model {
    6 d protected $insertFields = 'user';
    7 d protected $updateFields = 'user';
    8 }

    数据写入-----add(),返回ID

     1 //新增一条数据
     2 $user = M('User');
     3 $data['user'] = '李炎恢';
     4 $data['email'] = 'yc60.com@gmail.com';
     5 $data['date'] = date('Y-m-d H:i:s');
     6 $user->add($data);
     7 //结合create()方法
     8 $user = M('User');
     9 $data = $user->create();
    10 $data['date'] = date('Y-m-d H:i:s');
    11 $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 注释;

    1 //使用data连贯方法
    2 $user = M('User');
    3 $data = $user->create();
    4 $data['date'] = date('Y-m-d H:i:s');
    5 $user->data($data)->add();
    6 //data连贯方法 支持字符串、数组、对象
    7 $user = M('User');
    8 $data = 'user=星矢&mail=xinshi@qq.com&date='.date('Y-m-d H:i:s');
    9 $user->data($data)->add();

    数据读取

    主要有: select()--显示所有的数据

         find()--显示所有数据中的第一条

        getFeild()--根据字段获取数据

    支持17连贯操作,前边已经介绍过

    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 注释。

     1 //显示默认第一条数据
     2 $user = M('User');
     3 var_dump($user->find()); //可以传递数字参数,AR 模式
     4 //显示默认所有数据
     5 $user = M('User');
     6 var_dump($user->select()); //可以传递数组形式的 SQL
     7 //获取第一条user字段的值
     8 $user = M('User');
     9 var_dump($user->getField('user'));
    10 //获取所有user字段的值
    11 $user = M('User');
    12 var_dump($user->getField('user', true));
    13 //传递多个字段,获取所有
    14 $user = M('User');
    15 var_dump($user->getField('user,email'));
    16 //没有分隔符和select相同,id冒号分隔
    17 $user = M('User');
    18 var_dump($user->getField('id,user,email',':'));
    19 //限制2条数据
    20 $user = M('User');
    21 var_dump($user->getField('id,user,email',2));

    数据更新---save()--修改,setField()--设置某一个值,setInc()--累加,setDec()--累减

    数据更新的 save()方法支持的连贯方法有:
    1.where,查询或更新条件;
    2.table,要操作的数据表名称;
    3.alias,数据表别名;
    4.field,查询字段;
    5.order,结果排序;
    6.lock,锁;
    7.relation,关联查询;
    8.scope,命名范围;
    9.bind,数据绑定操作;
    10.comment,SQL 注释。

     1 //修改第一条数据
     2 $user = M('User');
     3 $data['user'] = '蜡笔大新';
     4 $data['email'] = 'daxin@qq.com';
     5 $map['id'] = 1;
     6 $user->where($map)->save($data); //成功后返回 1,否则 0
     7 //默认主键为条件
     8 $user = M('User');
     9 $data['id'] = 1;
    10 $data['user'] = '蜡笔小新';
    11 $data['email'] = 'xiaoxin@163.com';
    12 $user->save($data);
    13 //结合create()
    14 $user = M('User');
    15 $user->create(); //POST必须包含主键
    16 $user->save();
    17 //修改某一个值
    18 $user = M('User');
    19 $map['id'] = 1;
    20 $user->where($map)->setField('user', '蜡笔大新');
    21 //统计累计,累加累减
    22 $user = M('User');
    23 $map['id'] = 1;
    24 $user->where($map)->setInc('count',1); //累加,setDec 累减

    数据删除----delete()

    delete()方法支持的连贯操作有:
    1.where,查询或更新条件;
    2.table,要操作的数据表名称;
    3.alias,数据表别名;
    4.order,结果排序;
    5.lock,锁;
    6.relation,关联查询;
    7.scope,命名范围;
    8.bind,数据绑定操作;
    9.comment,SQL 注释。

     1 //直接删除主键(id=17)
     2 $user = M('User');
     3 $user->delete(17);
     4 //根据ID来删除
     5 $user = M('User');
     6 $map['id'] = 16;
     7 $user->where($map)->delete();
     8 //批量删除多个
     9 $user = M('User');
    10 $user->delete('1,3,5');
    11 //删除count为0且按时间倒序的前五个
    12 $user = M('User');
    13 $map['count'] = 0;
    14 $user->where($map)->order(array('date'=>'DESC'))->limit(5)->delete();
    15 //删除所有数据,谨慎
    16 $user = M('User');
    17 echo $user->where('1')->delete();

    ActiveReocrd模式  AR模式,只有对比才能深刻的理解,这种方法很方便

     1 //添加一条数据
     2 $user = M('User');
     3 $user->user = '火影忍者';
     4 $user->email = 'huoyin@qq.com';
     5 $user->date = date('Y-m-d H:i:s');
     6 $user->add();
     7 //结合create
     8 $user = M('User');
     9 $user->create();
    10 $user->date = date('Y-m-d H:i:s');
    11 $user->add();
    12 //找到主键为4的值
    13 $user = M('User');
    14 var_dump($user->find(4));
    15 //查找user=蜡笔小新的记录
    16 $user = M('User');
    17 var_dump($user->getByUser('蜡笔小新'));
    18 //输出user
    19 o echo $user->user;
    20 //通过主键查询多个
    21 $user = M('User');
    22 var_dump($user->select('1,2,3'));
    23 //修改一条数据
    24 $user = M('User');
    25 $user->find(1);
    26 $user->user = '蜡笔老新';
    27 $user->save();
    28 //删除当前找到的数据
    29 $user = M('User');
    30 $user->find(11);
    31 $user->delete();
    32 //删除主键为10的数据
    33 $user = M('User');
    34 $user->delete(10);
    35 //删除主键为10,11的数据
    36 $user = M('User');
    37 $user->delete('10,11');

    字段映射---一般情况不用,直接对应就行

     1 //字段映射可以将表单里的 name 名称对应到数据表里的字段,这样防止系统
     2 //自动屏蔽掉
     3 //不对应的 POST 值。
     4 //字段映射
     5 d protected $_map =  array(
     6 'xingming'=>'user',
     7 'youxiang'=>'email',
     8 );
     9 //字段映射获取
    10 $user = D('User');
    11 var_dump($user->create());
  • 相关阅读:
    安全和加密
    awk
    CentOS7练习
    CentOS7系统引导顺序以及排障
    网络配置
    RAID阵列搭建
    LVM逻辑卷
    java-web——第九课 request
    java-web——第八课 JSTL的显示格式
    java-web——第七课 JSTL
  • 原文地址:https://www.cnblogs.com/zhengfengyun/p/6135085.html
Copyright © 2011-2022 走看看