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

 

posted on 2015-02-25 22:26  JYsharp  阅读(402)  评论(0编辑  收藏  举报