Loading

第 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 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,

 

posted @ 2015-10-02 17:49  狂扫一条街  阅读(129)  评论(0编辑  收藏  举报