模型是MVC结构中非常重要的一个环节,好的模型设计会使代码易于修改,会使敏捷开发更加便捷,会使系统结构更加合理。GF中所有的模型都是放在项目的Model目录内,通常我们为了方便管理会为模型设置分组。比如我们建立一个用户的积分模型,那么一个比较合理的目录结构是/App1/Model/User/UserModel.php,我们是把这个用户模型文件放在User分组下的,当然我们也可以不使用分组,这个不是强制的。比如/App1/Model/UserModel.php,这样是直接放到Model目录下的,两者只是在调用的时候路径不同而已。
首先我们需注意配置文件中'mysql'项的数据表前缀设置,比如:
'dbprefix' => 'gf',
那么UserModel.php会自动关联到gf_user数据表。当然如果没有自动关联的数据表,本文最后会为您讲解如何关联名称不对应的数据表。
接下来让我们定义ScoreModel.php的内容,通过上文可以了解到这个模型文件会自动关联到gf_user数据表,那么下面会介绍几个常用的功能。
首先定义Model类,类名通常是文件名称,如果需要自动关联到数据表,那么需要继承GF_Model类。
class UserModel extends GF_Model {}
接下来,我们定义一个方法来获取所有的用户列表。
class UserModel extends GF_Model { public function getAllUser() {
$list = $this->order('id asc')->select();
return $list;
}}
这样便定义好了获取所有用户的方法,那么控制器中如何调用呢,假设该模型文件是放在/App1/Model/User/UserModel.php控制器中语句为:
$UserModel = D('User.User'); //如果是在Model根目录下,那么语句为 $UserModel = D('User')即可;
$userList = $UserModel->getAllUser();
这样便可以了,从模型中得到了用户列表。
那么如何关联名称不对应的数据表呢,这个在实际项目中也会遇到。比如我们的数据表名称为gf_myuser,那么假设我们依然使用/App1/Model/User/UserModel.php文件与gf_myuser表进行关联,那么我们可以这样定义模型:
class UserModel extends GF_Model { public function construct() { parent::construct('myuser'); //关联gf_myuser表 }}
本节为您讲解了如何定义模型、模型分组以及自动与手动关联数据表的方法,具体的CURD操作后面的章节会详细介绍。