一.创建数据库 在使用模型操作之前,我们首先创建一个数据库: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 Think\Model; //导入空间命名//实例化Model类$user = M('User');//不需要再导入命名空间
除了使用 Model 基类和 M()方法,还有一种对应数据表的模型定义,比如:UserModel。 这种模型类并非必须定义的,只有当存在独立的业务逻辑或者属性的时候才需要。
//User模型类namespace Home\Model;use Think\Model;class UserModel extends Model {}创建了 UserModel 模型类后,控制器那头就可以直接声明。//User模型类$user = new UserModel();var_dump($user->select());
虽然使用模型类和数据表对应较为方便,但当有时我们需要更换表名、前缀、附加数据 库名等,就需要一些字段定义的操作。为了更加方便的了解数据表的变化,我们使用一下页 面 Trace 工具,可以时时的查询 SQL 的变化。
//页面Trace,调试辅助工具 'SHOW_PAGE_TRACE' =>true,