• ThinkPHP开发笔记-模型


    1、模型定义。在ThinkPHP中,可以无需进行任何模型定义。只有在需要封装单独的业务逻辑的时候,模型类才是必须被定义的,因此ThinkPHP在模型上有很多的灵活和方便性,让你无需因为表太多而烦恼。

    模型类通常需要继承系统的ThinkModel类或其子类,下面是一个HomeModelUserModel类的定义:

    namespace HomeModel;
    use ThinkModel;
    class CategoryModel extends Model {
        protected $trueTableName = 'top_categories'; 
        protected $dbName = 'top';
    }

    2、模型实例化。根据不同的模型定义,我们有几种实例化模型的方法,根据需要采用不同的方式:

    (1)直接实例化。可以和实例化其他类库一样实例化模型类,模型类通常都是继承系统的ThinkModel类,例如:

    $User = new HomeModelUserModel();
    // 带参数实例化
    $New  = new HomeModelNewModel('blog','think_',$connection);

    (2)D方法实例化。D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化系统的ThinkModel基类,同时对于已实例化过的模型,不会重复去实例化。

    $User = D('User');

    (3)M方法实例化。D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。

    $User = M('User');

    (4)实例化空模型类。

    //实例化空模型
    $Model = new Model();
    //或者使用M快捷方法是等效的
    $Model = M();
    //进行原生的SQL查询
    $Model->query('SELECT * FROM think_user WHERE status = 1');

    3、数据库连接信息。系统默认会读取配置文件中的相关参数,包括:

    'DB_TYPE'      =>  '',     // 数据库类型
    'DB_HOST'      =>  '',     // 服务器地址
    'DB_NAME'      =>  '',     // 数据库名
    'DB_USER'      =>  '',     // 用户名
    'DB_PWD'       =>  '',     // 密码
    'DB_PORT'      =>  '',     // 端口
    'DB_PREFIX'    =>  '',     // 数据库表前缀
    'DB_DSN'       =>  '',     // 数据库连接DSN 用于PDO方式
    'DB_CHARSET'   =>  'utf8', // 数据库的编码 默认为utf8

    上面实例化方法中直接实例化和M方法实例化,都可以传入数据库连接信息。数据库连接信息参数支持三种格式:

    (1)字符串定义

    new HomeModelNewModel('blog','think_','mysql://root:1234@localhost/demo');

    (2)数组定义

    $connection = array(
        'db_type'    =>   'mysql',
        'db_host'    =>   '127.0.0.1',
        'db_user'    =>   'root',
        'db_pwd'     =>   '12345',
        'db_port'    =>    3306,
        'db_name'    =>    'demo', 
    );
    new HomeModelNewModel('new','think_',$connection);

    (3)配置定义

    //数据库配置1
    'DB_CONFIG1' => array(
         'db_type'  => 'mysql',
         'db_user'  => 'root',
         'db_pwd'   => '1234',
         'db_host'  => 'localhost',
         'db_port'  => '3306',
         'db_name'  => 'thinkphp'
    ),
    //数据库配置2
    'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp',

    然后,我们就可以这样实例化模型类传入连接信息:

    new HomeModelNewModel('new','think_','DB_CONFIG1');
    new HomeModelBlogModel('blog','think_','DB_CONFIG2');
  • 相关阅读:
    MyBatis-Plus之多租户架构(Multi-tenancy)——SAAS
    spring-data-mybatis-mini
    mybatis-plus
    JPA/Hibernate组合的映射,实体继承的映射
    JPA(Java Persistence API)--JavaEE5.0标准ORM规范
    spring data jpa
    mybatis笔记(二)多表关联映射、延迟加载、一级二级缓存、整合ehcache、spring整合mybatis
    mybatis笔记(一)入门程序、dao开发方式、mapper开发方式、全局配置文件、映射文件、动态sql
    Spring 事务处理、整合web
    Spring JdbcTemplate
  • 原文地址:https://www.cnblogs.com/NaughtyBaby/p/4539716.html
Copyright © 2020-2023  润新知