当前位置: 首页 > 文档资料 > SpeedPHP 帮助手册 >

1. 建立数据模型类

优质
小牛编辑
133浏览
2023-12-01

建立数据模型类

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

以下是两种方案:

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

<?php
class DbController extends BaseController {
    function actionIndex(){
        // 直接使用demo_user表
        $user = new Model('test_user');

        $this->findall = $user->findAll();
        $this->display("db/create.html");
    }
}

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

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

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

建立数据模型类

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

<?php
class User extends Model{
    public $table_name = "test_user";

    public function Login($username, $userpass){
        // 这里是登录逻辑,检查传入参数是否跟数据库匹配
        return $this->find(array(
            "username" => $username,
            "password" => $userpass, 
        ));
    }
}

在控制器里面就可以:

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

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

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