Laravel 来自不同用户的控制器更新模型
Laravel Controller update model from different users
在我的 Laravel 应用程序中,我有一个名为 Project
的模型,其中有一个名为 approved_at
的 属性。还有一个ProjectController
,里面包含了常用的方法 *(index
, show
, create
, update
, edit
...)
现在,创建 Project
的用户可以对其进行编辑(修改其其他属性),但只有部分“员工”成员有权批准。
据我了解,审批操作可以有两种方式:
- 两个用户,从他们各自的观点(让我们称他们为
edit
和 approve
)触发 ProjectController@update
方法,这将在内部区分谁可以做什么授权或政策;
- 我创建了一个新的
ProjectApprovalController
,它有自己的 update
方法,并在端点检查授权(例如,/projects/{id}/approve
)。
解决此行为的最佳方法是什么?
这取决于你以后想用这个做什么。如果在 approve 方法后面有一些额外的步骤要做,例如:连接到外部微服务以检查项目是否存在于外部数据库中,那么你绝对应该拆分它。
如果你不介意,我建议你不要太关注实现。您的应用程序应该可以像构建它一样快速移动。格雷格·杨 (Greg Young) 对此有一个很棒的演讲,名为“The Art of
销毁软件”。更加专注于使用 SOLID 原则构建您的解决方案并测试此方法的行为,以便将来更容易替换。
回答你的问题,第二种方案比较restful的做法,不知道是不是用大炮打飞
在我的 Laravel 应用程序中,我有一个名为 Project
的模型,其中有一个名为 approved_at
的 属性。还有一个ProjectController
,里面包含了常用的方法 *(index
, show
, create
, update
, edit
...)
现在,创建 Project
的用户可以对其进行编辑(修改其其他属性),但只有部分“员工”成员有权批准。
据我了解,审批操作可以有两种方式:
- 两个用户,从他们各自的观点(让我们称他们为
edit
和approve
)触发ProjectController@update
方法,这将在内部区分谁可以做什么授权或政策; - 我创建了一个新的
ProjectApprovalController
,它有自己的update
方法,并在端点检查授权(例如,/projects/{id}/approve
)。
解决此行为的最佳方法是什么?
这取决于你以后想用这个做什么。如果在 approve 方法后面有一些额外的步骤要做,例如:连接到外部微服务以检查项目是否存在于外部数据库中,那么你绝对应该拆分它。
如果你不介意,我建议你不要太关注实现。您的应用程序应该可以像构建它一样快速移动。格雷格·杨 (Greg Young) 对此有一个很棒的演讲,名为“The Art of 销毁软件”。更加专注于使用 SOLID 原则构建您的解决方案并测试此方法的行为,以便将来更容易替换。
回答你的问题,第二种方案比较restful的做法,不知道是不是用大炮打飞