一.创建数据库 在使用模型操作之前,我们首先创建一个数据库: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,