zoukankan      html  css  js  c++  java
  • [转]ThinkPHP的CURD易忽视点小结

    转自: http://www.oschina.net/code/snippet_2285640_44437、

    1、使用对象的方法插入数据 D用法。
    $Form = D('Form');
    $data['title'] = 'ThinkPHP';
    $data['content'] = '表单内容';
    $Form->add($data);
    
    其实thinkphp还支持对象的方式直接向数据库插入数据,如下:
    $Form = D('Form');
    $Form->title = 'ThinkPHP';
    $Form->content = '表单内容';
    $Form->add();
    
    2、不指定条件对数据更新。
    $Form = M("Form"); // 要修改的数据对象属性赋值
    $data['id'] = 5;
    $data['title'] = 'ThinkPHP';
    $data['content'] = 'ThinkPHP3.1版本发布';
    $Form->save($data); // 根据条件保存修改的数据
    
    save方法会自动识别数据对象中的主键字段,并作为更新条件。当然,你也可以显式的传入更新条件,也就是我们最常用的方法:
    $Form = M("Form");
    // 要修改的数据对象属性赋值
    $data['title'] = 'ThinkPHP';
    $data['content'] = 'ThinkPHP3.1版本发布';
    $Form->where('id=5')->save($data); // 根据条件保存修改的数据
    
    其实还有对象的方式,就像上面提到的,插入数据,用对象的方式一样:
    $Form = M("Form");
    // 要修改的数据对象属性赋值
    $Form->title = 'thinkphp';
    $Form->content = 'ThinkPHP3.1版本发布';
    $Form->where('id=5')->save(); // 根据条件保存修改的数据
    
    并且,可以将主键字段包含在要保存的数据里,这样就可以不需要写where了
    $Form = M("Form");
    // 要修改的数据对象属性赋值
    $Form->id = 5;
    $Form->title = 'thinkphp';
    $Form->content = 'ThinkPHP3.1版本发布';
    $Form->save(); // 根据数据对象中的主键保存修改的数据
    
    3、单个字段值的修改。
    
    有些时候,我们只需要修改某个字段的值,就可以使用setField方法,而不需要每次都调用save方法。
    $Form = M("Form"); // 更改title值
    $Form->where('id=5')->setField('title','ThinkPHP');
    
    6、强大的增减字段值运算。
    
    thinkphp中,可以对某个字段的数据直接执行增减操作。
    
    对于统计字段,系统还提供了更加方便的setInc和setDec方法。
    $User = M("User"); // 实例化User对象
    $User->where('id=5')->setInc('score',3); // 用户的积分加3
    $User->where('id=5')->setInc('score'); // 用户的积分加1
    $User->where('id=5')->setDec('score',5); // 用户的积分减5
    $User->where('id=5')->setDec('score'); // 用户的积分减1
    
    7、不使用where来执行删除。
    
    $User->delete('1,2,5'); // 删除主键为1,2和5的用户数据。
    
    这种用法可以用在类似于签到时候,用户积分自动增加的例子上。
    
    8、打印sql语句
    echo $User->getLastSql();或者echo $User->_sql();
    
    
    循环输出
    volist 还有别名 iterate
    
    模版赋值:
    $User = D('User')
    $list = $User->findAll()
    $this->assign('list',$list)
    
    模版定义:
    <iterate name="list" id="vo">
    {$vo.name}
    </iterate>
    
    注意 name 和 id 表示的含义
    // 输出 list 的第 5~15 条记录
    <iterate name="list" id="vo" offset="5" length='10'>
    {$vo.name}
    </iterate>
    
    // 输出偶数记录
    <iterate name="list" id="vo" mod="2" >
    <eq name="mod" value="1">
    {$vo.name}
    </eq>
    </iterate>
    
    // 输出 key
    <iterate name="list" id="vo" key="k" >
    {$k}.{$vo.name}
    </iterate>
    
    //子循环输出
    <volist name="list" id="vo">
    <iterate name="vo['sub']" id="sub">
    {$sub.name}
    </iterate>
    </volist>
    
    Switch 标签
    <switch name="name">
    <case value="1">value1</case>
    <case value="2">value2</case>
    <default />default
    </switch>
    其 中 name 属性可以使用函数以及系统变量,例如:
    <switch name="Think.get.userId|abs">
    <case value="1">admin</case>
    <default />default
    </switch>
    也 可以对 case 的 value 属性使用变量,例如:
    <switch name="userId">
    <case value="$adminId">admin</case>
    <case value="$memberId">member</case>
    <default />default
    </switch>
    
    比较标签
    <eq name="name" value="value">value</eq> // name 变量的值等于 value 就输出
    <neq name="name" value="value">value</neq> // name 变量的值不等于 value 就输出
    <gt name="name" value="5">value</gt> // name 变量的值大于 5 就输出
    <egt name="name" value="5">value</egt> // name 变量的值大于等于 5 就输出
    <lt name="name" value="5">value</lt> // name 变量的值小于 5 就输出
    <elt name="name" value="5">value</elt> // name 变量的值小于等于 5 就输出
    
    
    //其实上面的所有标签都是 compare 标签的别名
    // 其中 type 属性的值就是上面列出的判断标签名称
    <compare name="name" value="5" type="eq">value</compare> // name 变量的值等于 5 就输出
    
    If标签
    <if condition="$name eq 1 "> value1
    <elseif condition="$name eq 2" />value2
    <else /> value3
    </if>
    
    C操作
    操作(动态)配置: 主要用于Action方法里面
    获取:
    C('配置参数')
    设置:
    C('配置参数 ',新值)
    
    A操作
    快速创建Action对象:
    $action = A('User');
    等效于
    $action = new UserAction();
    
    D操作
    快速创建模型数据对象:
    $model = D('User');
    等效于
    $model = new UserModel();
    
    S操作
    快速操作缓存方法
    获取:
    S('name')
    设置:
    S('name','value');
    删 除:
    S('name',NULL);
    
    F操作
    快速文件数据保存方法
    使用方法与S操作一样
    
    
    L操作
    快速操作语言变量
    获取:
    L('语言变量');
    设置:
    L('语言变量','值');
    如: L('USER_INFO','用户信息'); //设置名称为USER_INFO的语言变量
    批量赋值:
    $arr['语言变量1'] = '值1';
    $arr['语言变量2'] = '值2';
    L($arr);
    
    ThinkPHP系统常量
    
    THINK_PATH // ThinkPHP 系统目录
    APP_PATH // 当前项目目录
    APP_NAME // 当前项目名称
    MODULE_NAME //当前模块名称
    ACTION_NAME // 当前操作名称
    TMPL_PATH // 项目模版目录
    LIB_PATH // 项目类库目录
    CACHE_PATH // 项目模版缓存目录
    
    CONFIG_PATH //项目配置文件目录
    LOG_PATH // 项目日志文件目录
    LANG_PATH // 项目语言文件目录
    TEMP_PATH //项目临时文件目录
    PLUGIN_PATH // 项目插件文件目录
    VENDOR_PATH // 第三方类库目录
    DATA_PATH // 项目数据文件目录
    IS_APACHE // 是否属于 Apache
    IS_IIS //是否属于 IIS
    IS_WIN //是否属于Windows 环境
    IS_LINUX //是否属于 Linux 环境
    IS_FREEBSD //是否属于 FreeBsd 环境
    NOW_TIME // 当前时间戳
    MEMORY_LIMIT_ON // 是否有内存使用限制
    
    MEMORY_LIMIT_ON // 是否有内存使用限制
    OUTPUT_GZIP_ON // 是否开启输出压缩
    MAGIC_QUOTES_GPC // MAGIC_QUOTES_GPC
    THINK_VERSION //ThinkPHP 版本号
    LANG_SET // 浏览器语言
    TEMPLATE_NAME //当前模版名称
    TEMPLATE_PATH //当前模版路径
    __ROOT__ // 网站根目录地址
    __APP__ // 当前项目(入口文件)地址
    __URL__ // 当前模块地址
    __ACTION__ // 当前操作地址
    __SELF__ // 当前 URL 地址
    TMPL_FILE_NAME //当前操作的默认模版名(含路径)
    WEB_PUBLIC_URL //网站公共目录
    APP_PUBLIC_URL //项目公共模版目录
    
    预定义常量
    WEB_LOG_ERROR=0 // 错误日志类型
    WEB_LOG_DEBUG=1 // 调试日志类型
    SQL_LOG_DEBUG=2 // SQL 日志类型
    SYSTEM_LOG=0 // 系统方式记录日志
    MAIL_LOG=1 // 邮件方式记录日志
    TCP_LOG=2 // TCP 方式记录日志
    FILE_LOG=3 // 文件方式记录日志
    DATA_TYPE_OBJ=1 // 对象方式返回
    DATA_TYPE_ARRAY=0 // 数组方式返回
    URL_COMMON=0 // 普通模式 URL
    URL_PATHINFO=1 // PATHINFO URL
    URL_REWRITE=2 // REWRITE URL
    HAS_ONE=1 // HAS_ONE 关联定义
    BELONGS_TO=2 // BELONGS_TO 关联定义
    HAS_MANY=3 // HAS_MANY 关联定义
    MANY_TO_MANY=4 // MANY_TO_MANY 关联定义
    EXISTS_VAILIDATE = 0 // 表单存在字段则验证
    MUST_VALIDATE = 1 // 必须验证
    VALUE_VAILIDATE = 2 // 表单值不为空则验证
    
    I方法
        echo I('get.id'); // 相当于 $_GET['id']
        echo I('get.name'); // 相当于 $_GET['name']
        echo I('get.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串
    
  • 相关阅读:
    Android 逐帧动画
    MAP getLastKnownLocation()返回null的解决
    大数取余
    (a^b)%c和(a/b)%c
    HDU1046 Gridland
    顺序入栈的出栈方法种数
    HDU1021 Fibonacci Again
    HDU1019 Least Common Multiple
    HDU1018 Big Number
    HDU1013 Digital Roots
  • 原文地址:https://www.cnblogs.com/Athrun/p/4153271.html
Copyright © 2011-2022 走看看