thinkphp 学习1-模型

1.用M()方法建立模型类

$model = M("configsettings”);php

2.使用find()方法或select()方法返回结果集

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的全部记录

 

3.自定义模型类

若是在某个模型类里面定义了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,以确保可以找到对应的数据表。性能

 

4.模型实例化

直接实例化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方法。

相关文章
相关标签/搜索