【发布时间】:2019-02-16 06:53:47
【问题描述】:
我正在努力思考如何处理这个用例。
我有一个具有唯一数据库字段(电子邮件)的用户模型。我也在使用软删除。
我需要处理三种情况:
1) 更新用户模型。目前我的验证阻止用户被更新,因为这封电子邮件已经存在。我认为如果电子邮件没有更改,则忽略电子邮件验证很容易解决这个问题。
2) 更新了不同的用户模型,并将电子邮件更改为数据库中已经存在的另一个电子邮件。
3) 创建了一个新模型,并且电子邮件已经存在于数据库中。
以上所有场景还必须考虑软删除模型。
有人对如何构建这个有一些建议吗?
【问题讨论】:
-
我猜你会为自己打造 3 个不同的 FormRequests 并且可能会引入一些自定义规则。这就是我会做的。
-
我在 Laravel 控制器公共方法存储和更新中处理了这一切。表单只是发送所有数据的一种表单。关于更新,表单字段预先填充了数据库中该用户的现有值。
-
是的,将其移至 FormRequests,它将帮助您精简控制器,这就是我要做的。 注意:更新 FR 应该在
rules()中有某种逻辑来在更新自己和其他人之间切换。显然你不需要 3 个 FR,而是 2 个,我的错。祝你好运! -
听起来像一个计划,我会研究 FormRequests。谢谢!
-
完成后,在此处发布 更新 FR,因为那将是最有问题的一个,我会用实际代码进一步帮助你(如果你这样做了在此期间不要自己弄清楚)。我还将 FR 命名为:
UserUpdateRequest、ModelActionRequest或ModelAction,当然还可以使用art make:request命令。
标签: database laravel validation