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 \Home\Model\BlogModel();

 

 

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

$Blog= D('Blog');
// 相当于 $Blog= new \Home\Model\BlogModel();

 

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

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

 

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

1.自动验证参数正确性

namespace Home\Model;
use Think\Model;
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();
}

 

posted @ 2016-11-24 11:11  alin_qu  阅读(1161)  评论(0编辑  收藏  举报