美文网首页
ThinkPHP(三)

ThinkPHP(三)

作者: PHPer_ | 来源:发表于2017-08-18 14:41 被阅读266次

    ThinkPHP的调试方法

    在开发过程中用好调试方法,和调试手段,对开发有很大的帮助;

    //开启页面展示信息
    'SHOW_PAGE_TRACE'=>true;
    //trace调试
    trace('name',C('name'));
    //控制器调试
    dump($_SERVER);
    //记录和统计时间(微秒)和内存使用情况,对程序的逻辑检测,是否有慢查询,死循环等等
    G('run');
    $str = '';
    for ($i=1;$i<1000;$i++) {
         $str += $i;
    }
    echo G('run','end');
    

    ThinkPHP数据库操作

    • 连接数据库
    /* 数据库设置 */
    'DB_TYPE'    =>  '',     // 数据库类型
    'DB_HOST'   =>  '',     // 服务器地址
    'DB_NAME'   =>  '',     // 数据库名
    'DB_USER'   =>  '',     // 用户名
    'DB_PWD'     =>  '',     // 密码
    'DB_PORT'    =>  '3306',     // 端口
    'DB_PREFIX'  =>  'shop_',    // 数据库表前缀
    

    注意

    需要注意的是,ThinkPHP的数据库连接是惰性的,所以并不是在实例化的时候就连接数据库,而是在有实际的数据操作的时候才会去连接数据库(额外的情况是,在系统第一次实例化模型的时候,会自动连接数据库获取相关模型类对应的数据表的字段信息)。

    • 实例化基础模型
    //传参表名
    $user = new Model('user') OR $user = M('user');
    $data = $user->select();
    dump($data);
    
    • 实例化用户自定义模型

    在Model文件夹下新建一个User模型文件,对应数据库中要有user表,如果想要实例化没有表的模型类请不要extends Model;

    <?php
    namespace Home\Model;
    use Think\Model;
    
    class UserModel extends Model {
        
    }
    

    控制器中调用

    $user = new UserModel() OR $user = D('user');
    $data = $user->select();
    dump($data);
    

    使用D方法当没有对应的模型文件时将自动转成M方法去执行;

    • 实例化公共模型

    在Model文件夹下新建一个Common模型文件

    <?php
    namespace Home\Model;
    use Think\Model;
    
    class CommonModel extends Model {
    
        function str($str) {
            return md5(sha1($str));
        }
    
    }
    

    如果每个模型里都需要有str这个方法进行操作,那么可以将自定义模型文件直接继承这个公共模型,所以这个公共模型里面放置的是通用方法,OOP基本思想的一个体现,用法一样可以使用D方法;

    $model = D('user');
    echo $model->str('hello');
    
    • 实例化空模型

    当你需要一些特别复杂的CURD操作时,可以用空模型写原生SQL来执行;

    $model = M();
    //支持原生SQL语句,query主要负责读取数据,select
    $data = $model->query('select * from shop_user');
    //execute主要负责写入数据,insert,update 
    $data = $model->execute("insert into shop_user(name,age) values('www',18)");
    

    在实际工作中不推荐使用原生SQL语句,因为写原生SQL语句它存在的SQL注入的风险;

    CURD操作之添加

    add添加一条数据

    //返回值int表主键ID
    echo M('user')->add($data);
    

    addAll添加多条数据

    echo M('user')->addAll($data);
    

    调试方法,打印出最后一次执行的sql语句

    M()->getLastSql();
    'SHOW_PAGE_TRACE'=>true,
    

    CURD操作之查询

    查询表中所有数据

    M('user')->select();
    

    where条件

    //直接使用字符串进行查找
    M('user')->where('id=1')->select();
    //使用数组,多条件直接指定
    $where['id'] = 1;
    M('user')->where($where)->select();
    //改变sql运算符
    $where['_logic'] = 'or';
    //表达式查询
    $where['id'] = array('lt',3);
    $where['id'] = array('between','1,5');
    $where['id'] = array('in','1,5');
    $where['name'] = array('like','%w%');
    M('user')->where($where)->select();
    

    统计用法

    //统计数量
    M('user')->count();
    //获取最大值,必须指定字段
    M('user')->max('age');
    //获取最小值,必须指定字段
    M('user')->min('age');
    //求平均值,必须指定字段
    M('user')->avg('age');
    //求和,必须指定字段
    M('user')->sum('age');
    

    CURD操作之更新

    save更新数据

    $where['id'] = 21;
    $update['name'] = '张三';
    $data = M('user')->where($where)->save($update);
    

    CURD操作之删除

    delete删除数据

    $where['id'] = 21;
    $data = M('user')->where($where)->delete();
    

    相关文章

      网友评论

          本文标题:ThinkPHP(三)

          本文链接:https://www.haomeiwen.com/subject/lhlarxtx.html