为了账号安全,请及时绑定邮箱和手机立即绑定

如果是对一张表的操作,有必要在对应的model里面写一个接口吗

如果是对一张表的操作,有必要在对应的model里面写一个接口吗

PHP
开满天机 2019-03-08 01:19:11
比如说我的controller是这样的 use App\Model\User; class UserController extends BaseController { protected $model; public function __construct(User $user) { $this->model = $user; } public function updatePhone(Request $request) { $id = $request->id; $phone = $request->phone; } } 函数updatePhone的用途就是更新用户的手机。在这一点上我不知道怎么办好,我可以这样写 $res = $this->model->where('id',$id)->update('phone',$phone) 因为这个逻辑只是更新用户的手机,只是对user表的单表操作,一般的框架里都有现成的对单表curd的函数。我还可以在controller里这样写 $res = $this->model->updatePhone($id, $phone); 然后在user model里面加一个接口 public function updatePhone($id,$phone) { return $this->where('id',$id)->update('phone',$phone); } 不知道这两种写法哪一个好一点?
查看完整描述

6 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

MVC 分层的好处就是隔离,Controller 负责处理请求,Model 负责和数据库进行 CURD 交互,View 负责显示数据。如果以后业务扩展,User 表新增 email、nickname 等也会发生更新的字段,这时候再在 Model 中写 updateEmail 和 uodateNickname,代码的复用性就很低了。
所以我觉得放到 Controller 中处理,更新指定的字段为指定的值,会更灵活。

查看完整回答
反对 回复 2019-03-18
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

放在model吧 你可以把代码写成可以更新多个字段的 自由控制传参 像2楼上说的 每次都写一个肯定不好 但是写一个可以更新一个或多个字段不是很好嘛 又能满足规范 又不会有重复的工作

查看完整回答
反对 回复 2019-03-18
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

如果这段代码经常被其他controller用到,封装到model里;只是当前业务逻辑用到,写到controller里。

查看完整回答
反对 回复 2019-03-18
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

建议还是放到Model中,将业务逻辑和数据操作分离开,这样项目大了后调试或者扩展都会很清晰

查看完整回答
反对 回复 2019-03-18
  • 6 回答
  • 0 关注
  • 567 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信