zoukankan      html  css  js  c++  java
  • 第 39 章 ThinkPHP--模型初步

    一.创建数据库 在使用模型操作之前,我们首先创建一个数据库:thinkphp。创建一个用户表:user。 添加一些数据即可。

    ThinkPHP 内置了抽象数据库访问层,把不同的数据库操作封装起来。我们只需要使用 公共的 Db 类进行操作,无须针对不同的数据库写不同的代码和底层实现。Db 类会自动调用 相应的数据库驱动来处理。

    目前支持的数据库包括 Mysql(包含 mysql 和 mysqli)、SqlServer、PgSQL、Sqlite、 Oracle、Ibase、Mongo、PDO 等。

    //全局配置定义
    'DB_TYPE'=>'mysql', //数据库类型
    'DB_HOST'=>'localhost', //服务器地址
    'DB_NAME'=>'thinkphp', //数据库名
    'DB_USER'=>'root', //用户名
    'DB_PWD'=>'123456', //密码
    'DB_PORT'=>3306, //端口
    'DB_PREFIX'=>'think_', //数据库表前缀
    PS:数据库全局配置信息除了 PDO,均可以采用上面的设置。
    //PDO专用定义
    'DB_TYPE'=>'pdo', //数据库类型
    'DB_USER'=>'root', //用户名
    'DB_PWD'=>'123456', //密码
    'DB_PREFIX'=>'think_', //数据库表前缀
    'DB_DSN'=>'mysql:host=localhost;dbname=thinkphp;charset=UTF8',

    二.实例化模型 连接上数据库后,我们需要从数据库里操作数据,那么就需要实例化模型类。在 ThinkPHP 中,提供了 Model 基类处理,也可以使用 M()方法。

    //实例化Model类,传一个数据表名
    $user = new Model('User');
    //显示变量结构
    var_dump($user);
    Model 基类可以传递三个参数:
    Model(['模型名'],['数据表前缀'],['数据库连接信息']);
    //实例化Model类,改变表前缀
    $user = new Model('User','tp_');
    //实例化Model类,定义数据库链接信息
    $user =
    new Model('User','think_','mysql://root:123456@localhost/thinkphp'); //应用于某些小地方的数据库调用
    //打印出所有数据
    var_dump($user->select());
    使用 Model 基类还需要导入命名空间,而使用 M()方法,则不需要。
    use ThinkModel; //导入空间命名
    //实例化Model类 $user = M('User');//不需要再导入命名空间

    除了使用 Model 基类和 M()方法,还有一种对应数据表的模型定义,比如:UserModel。 这种模型类并非必须定义的,只有当存在独立的业务逻辑或者属性的时候才需要。

    //User模型类
    namespace HomeModel;
    use ThinkModel;
    class UserModel extends Model {}
    创建了 UserModel 模型类后,控制器那头就可以直接声明。
    //User模型类
    $user = new UserModel();
    var_dump($user->select());

    虽然使用模型类和数据表对应较为方便,但当有时我们需要更换表名、前缀、附加数据 库名等,就需要一些字段定义的操作。为了更加方便的了解数据表的变化,我们使用一下页 面 Trace 工具,可以时时的查询 SQL 的变化。

    //页面Trace,调试辅助工具 'SHOW_PAGE_TRACE' =>true,
    我的个人博客,欢迎来访问!网址:http://www.miuu.club
  • 相关阅读:
    那段岁月
    ExtJS +Asp.NET实践(1)GridPanel与服务器端数据交互
    Jqplot+asp.net画图实现
    VC++ 内存机理的个人理解(一)——地址和指针的关系
    恢复PL/SQL Developer中删除确认对话框
    VC++ 内存机理的个人理解(二)——堆和栈
    用VS 2008开发WCF(一)——最快速的WCF入门
    用VS 2008开发WCF(二)——构建最初的服务器
    联想G460笔记本触摸板驱动 For Windows 7 x64
    .NET async await 关键字最简单例子
  • 原文地址:https://www.cnblogs.com/yu520zhong/p/4852472.html
Copyright © 2011-2022 走看看