zoukankan      html  css  js  c++  java
  • thinkphp 学习1-模型

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

    $model = M("configsettings”);

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

    find()只返回一行记录,select()方法可以返回多行,可以结合where()方法按条件查询。

    $model->find();   //返回configsettings表的第一行记录
    
    //也可以用
    $model->where("")->find();
    
    $model->where('status=1 AND name="thinkphp"')->find();
    
    $model->where("name='thinkphp'")->select();  //返回name=thinkphp的所有记录

    3.自定义模型类

    如果在某个模型类里面定义了connection属性的话,则实例化该自定义模型的时候会采用定义的数据库连接信息,而不是配置文件中设置的默认连接信息,通常用于某些数据表位于当前数据库连接之外的其它数据库:

    <?php 
    namespace HomeModel;
    
    class UserInfoModel extends ThinkModel{
        //定义数据库连接
        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"; //定义数据表名
        
    }
    ?>

    模型类并非必须定义,只有当存在独立的业务逻辑或者属性的时候才需要定义。模型类通常需要继承系统的ThinkModel类或其子类。

    模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,然后加上模型层的名称(默认定义是Model),例如:

    模型名 约定对应数据表(假设数据库的前缀定义是 think_)
    UserModel think_user
    UserTypeModel think_user_type

    如果你的规则和上面的系统约定不符合,那么需要设置Model类的数据表名称属性tabName,以确保能够找到对应的数据表。

    4.模型实例化

    直接实例化

    可以和实例化其他类库一样实例化模型类,例如:

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

    D方法实例化

    上面实例化的时候我们需要传入完整的类名,系统提供了一个快捷方法D用于数据模型的实例化操作。

    要实例化自定义模型类,可以使用下面的方式:

    <?php
    //实例化模型
    $User = D('User');
    // 相当于 $User = new HomeModelUserModel();
    // 执行具体的数据操作
    $User->select();
    ?>

    D方法的参数就是模型的名称,并且和模型类的大小写定义是一致的。

     

    M方法实例化模型

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

    // 使用M方法实例化
    $User = M('User');// 和用法 $User = new ThinkModel('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方法。

  • 相关阅读:
    转_前端开发技术概要
    获取链接的参数
    tabIndex 主要是美化tab键切换的体现
    textarea自动增高并隐藏滚动条
    Zen Coding:css,html缩写替换大观让你的html,css飞起来
    动态添加链接颜色代码
    转javascript 数组
    为指定元素增加样式
    1 CodeBox代码盒子 alpha版发布
    转发布js支持Firefox的加入收藏代码
  • 原文地址:https://www.cnblogs.com/weekend001/p/3975479.html
Copyright © 2011-2022 走看看