$model = M("configsettings”);php
find()只返回一行记录,select()方法能够返回多行,能够结合where()方法按条件查询。mysql
$model->find(); //返回configsettings表的第一行记录 //也能够用 $model->where("")->find(); $model->where('status=1 AND name="thinkphp"')->find(); $model->where("name='thinkphp'")->select(); //返回name=thinkphp的全部记录
若是在某个模型类里面定义了connection
属性的话,则实例化该自定义模型的时候会采用定义的数据库链接信息,而不是配置文件中设置的默认链接信息,一般用于某些数据表位于当前数据库链接以外的其它数据库:sql
<?php namespace Home\Model; class UserInfoModel extends \Think\Model{ //定义数据库链接 protected $connection = array( 'db_type' => 'mysql', 'db_user' => 'root', 'db_pwd' => 'goodtime', 'db_host' => 'localhost', 'db_port' => '3306', 'db_name' => 'test', 'db_prefix'=> '', 'db_charset' => 'utf8' ); protected $tableName = "userinfo"; //定义数据表名 } ?>
模型类并不是必须定义,只有当存在独立的业务逻辑或者属性的时候才须要定义。模型类一般须要继承系统的\Think\Model类或其子类。thinkphp
模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,而且首字母大写,而后加上模型层的名称(默认定义是Model),例如:数据库
模型名 | 约定对应数据表(假设数据库的前缀定义是 think_) |
UserModel | think_user |
UserTypeModel | think_user_type |
若是你的规则和上面的系统约定不符合,那么须要设置Model类的数据表名称属性tabName,以确保可以找到对应的数据表。性能
直接实例化spa
能够和实例化其余类库同样实例化模型类,例如:code
$User = new \Home\Model\UserModel(); $Info = new \Admin\Model\InfoModel(); // 带参数实例化 $New = new \Home\Model\NewModel('blog','think_',$connection);
D方法实例化blog
上面实例化的时候咱们须要传入完整的类名,系统提供了一个快捷方法D用于数据模型的实例化操做。 继承
要实例化自定义模型类,可使用下面的方式:
<?php //实例化模型 $User = D('User'); // 至关于 $User = new \Home\Model\UserModel(); // 执行具体的数据操做 $User->select(); ?>
D方法的参数就是模型的名称,而且和模型类的大小写定义是一致的。
M方法实例化模型
D方法实例化模型类的时候一般是实例化某个具体的模型类,若是你仅仅是对数据表进行基本的CURD操做的话,使用M方法实例化的话,因为不须要加载具体的模型类,因此性能会更高。
// 使用M方法实例化 $User = M('User');// 和用法 $User = new \Think\Model('User'); 等效 // 执行其余的数据操做 $User->select();
M方法也能够支持跨库操做,例如:
// 使用M方法实例化 操做db_name数据库的ot_user表 $User = M('db_name.User','ot_'); // 执行其余的数据操做 $User->select();
实例化空模型类
若是你仅仅是使用原生SQL查询的话,不须要使用额外的模型类,实例化一个空模型类便可进行操做了,例如:
//实例化空模型 $Model = new Model(); //或者使用M快捷方法是等效的 $Model = M(); //进行原生的SQL查询 $Model->query('SELECT * FROM think_user WHERE status = 1');
实例化空模型类后还能够用table方法切换到具体的数据表进行操做
咱们在实例化的过程当中,常常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每一个数据表定义模型类,若是D方法没有找到定义的模型类,则会自动调用M方法。