首页 > 开发 > PHP > 正文

ThinkPHP模型详解

2024-05-04 22:35:37
字体:
来源:转载
供稿:网友

模型定义,默认情况下,ThinkPHP的模型类是位于/Home/Model/目录之下,模型类通常需要继承系统的/Think/Model类或其子类,下面是一个Home/Model/UserModel类的定义:

文件命名遵守UserModel.class.php的方式,跟控制器的命名一样

<?phpnamespace Home/Model;use Think/Model;class UserModel extends Model {}

模型类的作用大多数情况是操作数据表的,如果按照系统的规范来命名模型类的话,大多数情况下是可以自动对应数据表,但你可以根据自己的需求来定制自己的数据表设置和操作。

首先我们需要在配置文件设置我们的数据库连接信息:

  'DB_TYPE'        => 'mysql',     'DB_HOST'        => 'localhost',   'DB_NAME'        => 'database',    'DB_USER'        => 'username',     'DB_PWD'        => 'password',    'DB_PORT'        => '3306',   

这些配置信息还是在/Home/Conf/config.php文件里设置。

指定数据表前缀

指定标前缀,我们在第一课的配置项已经指定,以下的文字表示你可以灵活配置你的数据表。

protected $tablePrefix = 'top_';

如果数据库的表没有表前缀,使用空字符串代替

protected $tablePrefix = '';

指定数据表,此处的指定的数据表的不需要添加表前缀:

protected $tableName = 'user';

举个例子说,比如说你的数据库中有一个没有表前缀的,名为users的数据表,可以用以下的两种方法在模型中进行下面的定义:

第一,直接根据系统的规范来命名模型类来命名模型,比如说就命名为UsersModel那么只需要在这个类里面加上下面的设置就可以了:

protected $tablePrefix = '';

ThinkPHP系统就会自动定位到users表了。

第二种情况时,如果你的模型类没有按照系统规范来命名,比如说不小心命名为UserModel,这种情况下可以同时指定表前缀和表明,比如:

protected $tablePrefix = '';protected $tableName = 'users';

或者你直接指定trueTableName:

protected $trueTableName = 'users';

既然模型通常是用来操作数据表,那么我们来看看模型的基本CURD:

注:为了方便演示,我们在UserController中定义一个testDemo()方法用于演示

public function testDemo()  {  }

以下的代码将会一段一段在这个方法里演示,你可以通过访问http://localhost:8999/index.php/Home/User/testDemo来看到实际效果。

添加纪录

$user = M('User');$data['username'] = 'ThinkPHP';$data['email'] = 'ThinkPHP@gmail.com';$user->create($data);$record = $user->add();dump($record);            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表