Rem*_*ben 11 laravel laravel-4
假设您正在尝试创建一个新用户,其用户模型(使用软删除)具有针对其电子邮件地址的唯一规则,但数据库中存在已删除的用户.
尝试验证新用户的数据时,由于现有的电子邮件,您将收到验证错误.
我在我的控制器中做了一些额外的验证,但是在模型中拥有它并不是很好吗?
您会建议创建自定义验证规则吗?
由于我现在还没有找到一个干净的解决方案,我对其他人如何解决这个问题感兴趣.
pet*_*les 15
这听起来像是您的业务逻辑问题,而不是技术问题.
软删除的目的是允许将来可以恢复软删除记录的可能性.但是,如果您的应用程序需要电子邮件的唯一性(这是完全正常的),您不希望同时使用该电子邮件地址创建新用户并能够恢复旧用户,因为这会违反唯一性要求.
因此,如果有一个软删除记录,其中包含您要添加为新记录的电子邮件地址,则应考虑恢复原始记录并将新信息作为更新应用于其中,而不是试图绕过唯一性检查创建一个新记录.
小智 13
这是最好的方法
'email' => 'required|email|unique:users,email,NULL,id,deleted_at,NULL',
Run Code Online (Sandbox Code Playgroud)
它给你这个查询
select count(*) as aggregate from `users` where `email` = ? and `deleted_at` is null
Run Code Online (Sandbox Code Playgroud)
Laravel提供" 附加条款 ".
我的URL验证规则(来自更新模型方法)如下所示:
$rules['url'] = 'required|unique:pages,url,'.$page->id.',id,deleted_at,NULL';
Run Code Online (Sandbox Code Playgroud)
这意味着url必须是唯一的,必须忽略当前页面并忽略deleted_at
id不是的页面NULL
.
希望这可以帮助.
归档时间: |
|
查看次数: |
11445 次 |
最近记录: |