模型设计的那点事 [ 新手入门 ]
这片文章主要是为了做纪录,新手入门。
模型Model
最近在开发RESTfulAPI,对于模型所了解的范围只是知道它封装好了AR可以提供数据表,然后可以直接使用模型查询数据了。
例如Common文件下: 有一个BaseModel继承了AR 在同级目录下还有个UserModel 继承了BaseModel.
平时在前台或后台使用时是这样用的: 前台: use Common\UserModel $u = User::find()->where()->one();
后台: use Common\UserModel $u = User::fnd()->where()->one();
这时候在想,是不是应该在前台设计一个Model文件夹,里面创建一个UserModel 继承 CommonUserModel 以后在前台使用User模型的时候就可以直接使用frond\Model\UserModel了 修改后的前台使用: use frond\Model\UserModel
同样-创建一个后台的User模型 backend\Model\UserModel.php
修改后的后台使用 use backend\Model\UserModel
。开头也说了,最近在写RESTful API,肯定也会用到User模型了。
同样也是api下创建一个供api使用的User模型 api\Model\UserModel.php 继承 Commo\UserModel.php
api 里使用时就可以use api\Model\UserModel
RESTful API 需要设置返回字段时就在api\Model\UserModel.php 里设置:
public function fields(){
return [
];
}
最后总结: 不同的地方使用属于自己的模型,后续就可以在自己的模型里扩展很多静态方法给控制器提供数据。是控制器只负责获取数据并渲染页面即可了。
之前的写法会在控制器里引用模型。然后在控制器里直接这么写的:
$u = User::fnd()->where()->one(); 或 $usr = new User(); ....
修改后应该是这样写:
在api\Model\UserModel.php 里写上:
public function getUser($uid){
return User::fnd()->where(['id'=>$uid])->one();
}
控制器里这样写:
public function actionIndex(){
$u = User::getUser(1);
}
大神们,我这样的想法设计可以吗?
共 0 条回复
灰太狼
最后登录:2023-07-14
在线时长:76小时17分
- 粉丝28
- 金钱3290
- 威望150
- 积分5550