ThinkPHP框架学习笔记
tp3.2.3自动生成代码教程http://www.thinkphp.cn/code/784.html
一、学习版本ThinkPHP3.13
1.通过入口文件创建项目:
① index.php内容中的require('./ThinkPHP/ThinkPHP.php');要放在尾部,否则创建的项目文件目录会默认在根目录下,define('APP_NAME','jyWeb');define('APP_PATH','./jyWeb/');无效
②定义项目编译文件所在目录
define('RUNTIME_PATH','./jyWeb/Temp');
2.修改模版定界符,在配置文件中添加以下内容:
'TMPL_L_DELIM' => '<{',
'TMPL_R_DELIM' => '}>'
3.连接数据库配置
'DB_TYPE' => 'mysql',
'DB_HOST' => 'localhost',
'DB_NAME' => 'xxx',
'DB_USER' => 'root',
'DB_PWD' => 'xxxx',
'DB_PORT' => 3306,
'DB_PREFIX' => 'xx_',
4.CURD操作
原生操作:
$Model = new Model() // 实例化一个model对象 没有对应任何数据表
$Model->query("select * from think_user where status=1");
构造数据库实体类模型对象操作
①比如xx_user表:
$userM=new $Model("user");
---------------------------查询-------------------------------
查询获取数据表中所有数据
$users=$userM->select();
条件式获取数据
$users=$userM->where("xx and yy")->select();
排序获取数据
$users=$userM->where("xx and yy") ->order("id desc")->select();
---------------------------插入-------------------------------
$User = M("User"); // 实例化User对象
$data['name'] = 'ThinkPHP';
$data['email'] = 'ThinkPHP@gmail.com';
$User->add($data);
---------------------------更新-------------------------------
$User = M("User"); // 实例化User对象
// 要修改的数据对象属性赋值
$data['name'] = 'ThinkPHP';
$data['email'] = 'ThinkPHP@gmail.com';
$User->where('id=5')->save($data); // 根据条件保存修改的数据
---------------------------删除-------------------------------
删除全部记录:$User->where('1')->delete();
条件删除:
$User->delete(1);//删除id值为1的记录
$User->where(...)->delete();
4.页面跳转
①Action类的三个方法:
$this->success('新增成功', 'list');//跳转到当前控制器下的list操作页面
$this->error('新增失败');//默认跳转到前一页
$this->redirect('list', array('cate_id' => 2), 5, '页面跳转中...');//跳转到当前控制器下的list操作页面
②redirect方法:
redirect('/New/category/cate_id/2', 5, '页面跳转中...');
二、TP3.2.3
1.如果入口文件绑定了某个模块,那么从这个入口文件就无法访问其他模块了
比如在index.php入口文件中写入 define('BIND_MODULE', 'Home');//绑定Home模块
则通过http://www.dabai.com/index.php/admin/ 想去访问admin模块就不行,会报错:
无法加载控制器:Admin
2.指定非Home模块为默认启动模块
在Common/conf/配置文件中写入
'DEFAULT_MODULE' => 'Front',//设置Front模块为默认模块
3.全局判断是否登陆的方法:
①自己封装一个继承原生controller的子类,比如AdminController
②在AdminController的初始化函数中进行登陆判断或权限操作
class AdminController extends Controller { /** * 后台控制器初始化 */ protected function _initialize(){ // 获取当前用户ID if(defined('UID')) return ; define('UID',is_login()); if( !UID ){// 还没登录 跳转到登录页面 $this->redirect('Public/login'); } 。。。。。。 } }
4.为单个字段在原有值的基础上增加数值
对于统计字段(通常指的是数字类型)的更新,系统还提供了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