• 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');
  • 相关阅读:
    如何查看openssl支持的所有TLS/SSL版本
    讲故事,学(AHK)设计模式—观察者模式
    React Hooks 详解 【近 1W 字】+ 项目实战
    为什么要在函数组件中使用React.memo?
    js防抖函数
    JS 深度优先遍历与广度优先遍历 实现查找
    你不知道的 requestIdleCallback
    RE:ゼロから始める文化課生活
    开学考小记 & 新生活的开始
    JS中:数组和对象的区别,以及遍历数组和遍历对象的区别
  • 原文地址:https://www.cnblogs.com/NaughtyBaby/p/4539716.html
Copyright © 2020-2023  润新知