• thinkphp框架之模型(数据库查询)


    1. 模型定义

         文件名称必须是 表名+Model.class.php 例如:UserModel.class.php

         

    namespace HomeModel;     //该模型类的命名空间
    use  ThinkModel;             //下面的模型类需要继承Model基类,Model是系统定义的模型类,在 ThinkModel 这个命名空间中
    class UserModel extends Model
    {    
    }

          文件中的类名是跟文件名中的“表名”是一致的(这一项是必须的如果不一致在控制器中就会找不到这个模型类)。

          类名与表名的对应关系是(注意:模型名中对应每个大写对应的数据表的前面都有一个下划线,如下第二行)

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

            

    2. 模型实例化

        2.1 直接实例化 

             2.1.1  不带参数实例化    $user=new HomeModelUserModel();

             2.1.2     带参数实例化    $user=new  HomeModelUserModel(['模型名'],['数据表前缀'],['数据库连接信息']);

            上述两种方法的区别在于,第一种在实例化的时候回去读取默认配置(例如在模型中的配置或者是模块中的数据库配置),而第二种方法是直接读取传入参数的数据库配置

            模型名是对应的数据库中的去掉前缀的表名,如果不指定这会读取模型类的名称但是是去掉Model后的名称 例如:

             UsereModel.class.php 文件中的 UsereModel 类 ,如果在实例化的时候传入模型名"User"会按传入查找数据表 前缀+“user”,如果不传则会提取 UsereModel类的 “Usere” 去查找数据表。这样可以解决模型名与数据表明不一致的问题。

         2.2  D方法实例化

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

    <?php 
      
    //实例化模型
     $user=D("User");
    
    //相当于 $user=new HomeModelUserModel(); 

         跨模块实例化

         D('Admin/User') 其中 “Admin” 是模块名称,“User”是模型名称  

        实例化 Extend扩展名空间下的Info模型

          D('Extend://Editor/Info')

        2.3 M方法实例化

            M('User') 与D方法实例化的区别是这个方法不需要该模型存在,并且如果模型存在则其中的方法也会别忽略,该方法主要是用来对数据库的操作。

              当D方法没有找到模型时会默认的调用 M方法。

        2.4  实例化空模型

             $Model=new Model() 或者 $Model=M();

              这种空实例可以用老进行原生的sql查询(注:其他的模型也可以进行原生的sql查询,并且查询的表不必跟模型对应

    3. 模型中的字段

       $fields=array('','') 表示数据表中的字段

       $pk 表示数据表的主键

       $connection=array('db_type' => 'mysql','db_user' => 'root','db_pwd' => '1234','db_host' => 'localhost','db_port' => '3306','db_name' => 'thinkphp','db_charset' => 'utf8','db_params' => array(), // 非必须);  表示数据库连接

       数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集

        $connection = 'mysql://root:1234@localhost:3306/thinkphp#utf8';

  • 相关阅读:
    归档模式与非归档模式之间的转换
    Cognos 常见错误解决办法
    Informatica 错误信息解决办法汇总
    转摘:解决动态列固定行月季年组合式报表
    数据库名、实例名、全局数据库名、服务名的区别
    转摘:维度与指标混合嵌入(合计)设计
    WinForm使用XML动态加载多语言
    windows中最重要的三个动态链接库及功能
    什么是.Net的异步机制(Invoke,BeginInvoke,EndInvoke) step 2
    深入理解.net服务器控件
  • 原文地址:https://www.cnblogs.com/xinxinzhihuo/p/5363412.html
Copyright © 2020-2023  润新知