zoukankan      html  css  js  c++  java
  • ThinkPHP

    一:链式操作总结

    1.例子

     //要获取的字段
    $field_value = array(
    'id',
    'keyword'
    );
    
    //where,默认多个字段是与的关系
    $where = array(
    'id' =>array('EGT',10),
    'shopping_village' =>1,
    );
    
    $contents = M('content',"crm_")
    ->field($field_value)
    ->where($where)
    ->order('crm_content.id DESC')
    ->limit(10)
    ->select(); 

    //解析后的SQL

    SELECT `id`,`keyword` FROM `crm_content` WHERE `id` >= 10 AND `shopping_village` = 1 ORDER BY crm_content.id DESC LIMIT 10

     //_logic设置多个参数之间或的关系
    $where = array(
    'id' =>array('EGT',10),
    'shopping_village' =>1,
    '_logic' =>'or',
    );

    //解析后的SQL 

    SELECT `id`,`keyword` FROM `crm_content` WHERE `id` >= 10 OR `shopping_village` = 1 ORDER BY crm_content.id DESC LIMIT 10

    
    
     //与或同时存在
    $where_and = array(
    'id' =>array('EGT',10),
    'shopping_village' =>1,
    '_logic' =>'AND'
    );
    
    $where = array(
    'url_type' =>1,
    '_complex'=>$where_and,
    '_logic'=>'OR'
    );

    //解析后的SQL

    SELECT `id`,`keyword` FROM `crm_content` WHERE `url_type` = 1 OR ( `id` >= 10 AND `shopping_village` = 1 ) ORDER BY crm_content.id DESC LIMIT 10

    
    
    
     

    2.连贯操作字段总结

    连贯操作作用支持的参数类型
    where* 用于查询或者更新条件的定义 字符串、数组和对象
    alias 用于给当前数据表定义别名 字符串
    field 用于定义要查询的字段(支持字段排除) 字符串和数组
    order 用于对结果排序 字符串和数组
    limit 用于限制查询结果数量 字符串和数字
    page 用于查询分页(内部会转换成limit) 字符串和数字
    group 用于对查询的group支持 字符串
    having 用于对查询的having支持 字符串
    join* 用于对查询的join支持 字符串和数组
    union* 用于对查询的union支持 字符串、数组和对象
    distinct 用于查询的distinct支持 布尔值
    lock 用于数据库的锁机制 布尔值

    3.比较总结

    表达式含义
    EQ 等于(=)
    NEQ 不等于(<>)
    GT 大于(>)
    EGT 大于等于(>=)
    LT 小于(<)
    ELT 小于等于(<=)
    LIKE 模糊查询
    [NOT] BETWEEN (不在)区间查询
    [NOT] IN (不在)IN 查询

    4.使用原生SQL查询

    $Model = M();
    //进行原生的SQL查询
    $Model->query('SELECT * FROM think_user WHERE status = 1');

    二:实例化模型

    1.直接实例化

    $Blog = new HomeModelBlogModel();

    2.使用D方法实例化自定义模型 若自定义模型不存在 则D函数会尝试实例化公共模块下面的 CommonModelUserModel 类

    $Blog= D('Blog');
    // 相当于 $Blog= new HomeModelBlogModel();

    3.使用M方法实例化模型 可以进行基本的CURD操作

    // 使用M方法实例化
    $Blog = M('Blog');

    三:使用D方法实例化模型的好处

    1.自动验证参数正确性

    namespace HomeModel;
    use ThinkModel;
    class UserModel extends Model{
       protected $_validate = array(
         array('verify','require','验证码必须!'), //默认情况下用正则进行验证
         array('name','','帐号名称已经存在!',0,'unique',1), // 在新增的时候验证name字段是否唯一
         array('value',array(1,2,3),'值的范围不正确!',2,'in'), // 当值不为空的时候判断是否在一个范围内
         array('repassword','password','确认密码不正确',0,'confirm'), // 验证确认密码是否和密码一致
         array('password','checkPwd','密码格式不正确',0,'function'), // 自定义函数验证密码格式
       );
    }
    $User = D("User"); // 实例化User对象
    if (!$User->create()){
         // 如果创建失败 表示验证没有通过 输出错误提示信息
         exit($User->getError());
    }else{
         // 验证通过 可以进行其他数据操作
    }

    2.自动完成规则

    protected $_auto = array ( 
         array('status','1'),  // 新增的时候把status字段设置为1
         array('password','md5',3,'function') , // 对password字段在新增和编辑的时候使md5函数处理
         array('name','getName',3,'callback'), // 对name字段在新增和编辑的时候回调getName方法
         array('update_time','time',2,'function'), // 对update_time字段在更新的时候写入当前时间戳
     );
    $User = D("User"); // 实例化User对象
    if (!$User->create()){ // 创建数据对象
         // 如果创建失败 表示验证没有通过 输出错误提示信息
         exit($User->getError());
    }else{
         // 验证通过 写入新增数据
         $User->add();
    }
  • 相关阅读:
    写了一个分页控件。
    职业规划
    程序员该做的事
    做就做最优秀的员工
    Tomcat+JSP经典配置实例
    2005年11月26日8点50左右,南昌地震。
    如何添加一个自定义的columnstyles 到设计器中,以便在设计时直接使用他们?
    Oracle 的入门心得【强烈推荐】
    如何随机显示记录条数的15% ?
    重写DataGrid的DataGridBoolColumn,添加bool值改变事件。
  • 原文地址:https://www.cnblogs.com/alin-qu/p/6096945.html
Copyright © 2011-2022 走看看