🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 建立数据模型类 通常在使用数据库之前,我们需要先建立好对应数据表的模型类。当然在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()方法。