建立数据模型类

通常在使用数据库之前,我们需要先建立好对应数据表的模型类。当然在sp框架里面可以简化这个步骤,直接通过自带的Model类来进行数据模型操作。

以下是两种方案:

不建立模型类,直接用Model进行操作

  1. <?php
  2. class DbController extends BaseController {
  3. function actionIndex(){
  4. // 直接使用demo_user表
  5. $user = new Model('test_user');
  6. $this->findall = $user->findAll();
  7. $this->display("db/create.html");
  8. }
  9. }

这里通过直接new Model()的方式来实例化user这个数据模型类,参数’test_user’是数据表的名称(全名)。

该方案的好处是简单便捷,不需要建立php文件。通常适用于:

  1. 项目中使用得相对比较少的数据表,模型类关键在于重用,但是用得少就没有太多必要重复使用了。
  2. 模型业务相对简单的模型类,也就是没有太多复杂的逻辑,仅仅进行增删改查的操作,那么也可以简化。

建立数据模型类

在项目的protected/model目录下,创建User.php文件,文件内容:

  1. <?php
  2. class User extends Model{
  3. public $table_name = "test_user";
  4. public function Login($username, $userpass){
  5. // 这里是登录逻辑,检查传入参数是否跟数据库匹配
  6. return $this->find(array(
  7. "username" => $username,
  8. "password" => $userpass,
  9. ));
  10. }
  11. }

在控制器里面就可以:

  1. <?php
  2. class UserController extends BaseController {
  3. function actionIndex(){
  4. // 这里演示了一个登录逻辑
  5. $user = new User();
  6. $is_login = $user->Login(arg("username"), arg("password"));
  7. if($is_login == true){
  8. // 验证通过,设置session,调整到登录后界面
  9. $_SESSION["user"] = arg("username");
  10. $this->jump(url("admin/main", "index"));
  11. }else{
  12. // 验证不通过,跳转回登录界面
  13. $this->tips("请输入正确用户名和密码", url("user", "loginform"));
  14. }
  15. }
  16. }

这里跟直接调用Model()的方式效果稍有不一样,差别在于:

  1. User.php这个类可以有更多可供重复使用的逻辑方法。
  2. 可以封装更多的相关的业务代码,如Login()方法。