ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 1.直接实例化 ~~~ $User = new \Home\Model\UserModel(); $Info = new \Admin\Model\InfoModel(); // 带参数实例化 $New = new \Home\Model\NewModel('blog','think_',$connection); ~~~ 模型类通常都是继承系统的\Think\Model类,有三个参数,都是可选的。 Model(['模型名'],['数据表前缀'],['数据库连接信息']); ### 1.1数据库连接信息参数支持三种格式 1. 字符串定义 ~~~ new \Home\Model\NewModel('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', 'db_charset' => 'utf8', ); new \Home\Model\NewModel('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', ~~~ 当实例化的时候没有传入任何的数据库连接信息,系统会默认获取配置文件中的相关配置参数,如: ~~~ 'DB_TYPE' => '', // 数据库类型 'DB_HOST' => '', // 服务器地址 'DB_NAME' => '', // 数据库名 'DB_USER' => '', // 用户名 'DB_PWD' => '', // 密码 'DB_PORT' => '', // 端口 'DB_PREFIX' => '', // 数据库表前缀 'DB_DSN' => '', // 数据库连接DSN 用于PDO方式 'DB_CHARSET' => 'utf8', // 数据库的编码 默认为utf8 ~~~ ## 2.D方法实例化 系统提供快捷方法D用于数据模型的实例化操作。 ~~~ <?php //实例化模型 $User = D('User'); // 相当于 $User = new \Home\Model\UserModel(); // 执行具体的数据操作 $User->select(); ~~~ 注:当`\Home\Model\UserModel`不存在的时候,D函数会尝试实例化公共模块下面的`\Common\Model\UserModel`类。 D方法的参数是模型的名称,对应关系如下: | 参数 | 实例化的模型文件(假设当前模块为Home) | | --- | --- | | User | 对应的模型类文件的 \\Home\\Model\\UserModel.class.php | | UserType | 对应的模型类文件的 \\Home\\Model\\UserTypeModel.class.php | D方法还可以支持跨模块调用: ~~~ //实例化Admin模块的User模型 D('Admin/User'); //实例化Extend扩展命名空间下的Info模型 D('Extend://Editor/Info'); ~~~ ## 3.M方法实例化模型 D方法实例化模型类通常是实例化某个具体的模型类,如果只是CRUD的操作,使用M方法进行实例化,不需要加载模型类,性能会更高。 ~~~ // 使用M方法实例化 $User = M('User'); // 和用法 $User = new \Think\Model('User'); 等效 // 执行其他的数据操作 $User->select(); ~~~ ## 4.实例化空模型类 如果你仅仅是使用原生SQL查询的话,不需要使用额外的模型类,实例化一个空模型类即可进行操作了,例如: ~~~ //实例化空模型 $Model = new Model(); //或者使用M快捷方法是等效的 $Model = M(); //进行原生的SQL查询 $Model->query('SELECT * FROM think_user WHERE status = 1'); ~~~