短方法
获取已经设置的参数值:C('参数名称') eg:$model = C('URL_MODEL');
C('my_config',null,'default_config');如果my_config尚未设置的话,则返default_confit。
C方法也可以用于读取二维配置:
//获取用户配置中的用户类型设置C('USER_CONFIG.USER_TYPE');
系统为上面的控制器实例化提供了一个快捷调用方法A,上面的代码可以简化为:
// 假设当前模块是Home模块
$User = A('User');
$Blog = A('Admin/Blog');
U方法的定义规则如下(方括号内参数根据实际应用决定):
U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])
eg U('Blog/cate',array('cate_id'=>1,'status'=>1))
I('变量类型.变量名',['默认值'],['过滤方法'],['额外数据源'])
eg echo I('get.id'); // 相当于 $_GET['id']
I('get.'); //相当于$_GET
$User = D('User');// 相当于 $User = new \Home\Model\UserModel();
如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。
$Model = M();//进行原生的SQL查询$Model->query('SELECT * FROM think_user WHERE status = 1');
连贯查询
连贯操作 作用 支持的参数类型
where* 用于查询或者更新条件的定义 字符串、数组和对象
table 用于定义要操作的数据表名称 字符串和数组
alias 用于给当前数据表定义别名 字符串
data 用于新增或者更新数据之前的数据对象赋值 数组和对象
field 用于定义要查询的字段(支持字段排除) 字符串和数组
order 用于对结果排序 字符串和数组
limit 用于限制查询结果数量 字符串和数字
page 用于查询分页(内部会转换成limit) 字符串和数字
group 用于对查询的group支持 字符串
having 用于对查询的having支持 字符串
join* 用于对查询的join支持 字符串和数组
union* 用于对查询的union支持 字符串、数组和对象
distinct 用于查询的distinct支持 布尔值
lock 用于数据库的锁机制 布尔值
cache 用于查询缓存 支持多个参数
relation 用于关联查询(需要关联模型支持) 字符串
result 用于返回数据转换 字符串
validate 用于数据自动验证 数组
auto 用于数据自动完成 数组
filter 用于数据过滤 字符串
scope* 用于命名范围 字符串、数组
bind* 用于数据绑定操作 数组或多个参数
token 用于令牌验证 布尔值
comment 用于SQL注释 字符串
如果要根据某个字段查询,例如查询姓名为ThinkPHP的可以用:
*****************************、关注下命名范围 protected $_scop
#增
$User = M("User"); // 实例化User对象// 然后直接给数据对象赋值
$User->name = 'ThinkPHP';
$User->email = 'ThinkPHP@gmail.com';// 把数据对象添加到数据库
$User->add();
#删
$User->find(2);$User->delete(); // 删除当前的数据对象
$User->delete(8); // 删除主键为8的数据
#改
$User->id = 1;
$User->name = 'TOPThink'; //
修改数据对象$User->save(); // 保存当前数据对象
#查
$User = M("User"); // 实例化User对象
$User->getByName("ThinkPHP");
// 查找主键为1、3、8的多个数据$userList = $User->select('1,3,8');
不同字段相同的查询条件
$User = M("User"); // 实例化User对象
$map['name|title'] = 'thinkphp';// 把查询条件传入查询方法
$User->where($map)->select();
SQL:name= 'thinkphp' OR title = 'thinkphp'
$map['id'] = array(array('gt',1),array('lt',10)) ;
( id > 1) AND ( id < 10)
组合查询的主体还是采用数组方式查询,只是加入了一些特殊的查询支持,包括字符串模式查询(_string)、复合查询(_complex)、请求字符串查询(_query),混合查询中的特殊查询每次查询只能定义一个,由于采用数组的索引方式,索引相同的特殊查询会被覆盖。
query方法用于执行SQL查询操作,如果数据非法或者查询错误则返回false,否则返回查询结果数据集(同select方法)。
execute用于更新和写入数据的sql操作,如果数据非法或者查询错误则返回false ,否则返回影响的记录数。
二、使用数组作为查询条件
这种方式是最常用的查询方式,例如:
$User = M("User"); // 实例化User对象
$condition['name'] = 'thinkphp';
$condition['status'] = 1;// 把查询条件传入查询方法
$User->where($condition)->select();
// 绑定Admin模块到当前入口文件
define('BIND_MODULE','Admin');
define('BUILD_CONTROLLER_LIST','Index,User,Menu');
define('BUILD_MODEL_LIST','User,Menu'
访问后会自动生成三个指定的控制器类:
Admin\Controller\IndexController
Admin\Controller\UserController
Admin\Controller\MenuController
访问会自动生成模型类:
Admin\Model\UserModel
Admin\Model\MenuModel
// 设置禁止访问的模块列表
'MODULE_DENY_LIST' => array('Common','Runtime','Api'),
'URL_CASE_INSENSITIVE' => true, //大小写不敏感
D('User') //实例化UserModel
D('User','Logic') //实例化UserLogic
D('User','Service') //实例化UserService
默认的模型层是Model,我们也可以更改设置,例如:
'DEFAULT_M_LAYER' => 'Logic', // 更改默认的模型层名称为Logic更改之后,实例化的时候需要改成:
D('User') //实例化
UserLogicD('User','Model') //实例化
UserModelD('User','Service') //实例化UserService
默认情况下,伪静态的设置为html,如果我们设置伪静态后缀为空,
'URL_HTML_SUFFIX'=>''
$this->ajaxReturn($data);
eg
1.$data['status'] = 1;
$data['content'] = 'content';
$this->ajaxReturn($data);
2.// 指定XML格式返回数据$data['status'] = 1;
$data['content'] = 'content';
$this->ajaxReturn($data,'xml');
$this->success('操作完成','/Article/index',3);//或者error
$this->redirect('New/category', array('cate_id' => 2), 5, '页面跳转中...');
请求类型判断
IS_GET 判断是否是GET方式提交
IS_POST 判断是否是POST方式提交
IS_PUT 判断是否是PUT方式提交
IS_DELETE 判断是否是DELETE方式提交
IS_AJAX 判断是否是AJAX提交
REQUEST_METHOD 当前提交类型