建立数据模型类
通常在使用数据库之前,我们需要先建立好对应数据表的模型类。当然在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文件。通常适用于:
- 项目中使用得相对比较少的数据表,模型类关键在于重用,但是用得少就没有太多必要重复使用了。
- 模型业务相对简单的模型类,也就是没有太多复杂的逻辑,仅仅进行增删改查的操作,那么也可以简化。
建立数据模型类
在项目的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()的方式效果稍有不一样,差别在于:
- User.php这个类可以有更多可供重复使用的逻辑方法。
- 可以封装更多的相关的业务代码,如Login()方法。