Laravel 5 自定义验证 - 自定义 MySQL 查询
Posted
技术标签:
【中文标题】Laravel 5 自定义验证 - 自定义 MySQL 查询【英文标题】:Laravel 5 Custom Validation - Custom MySQL Query 【发布时间】:2016-09-01 13:47:36 【问题描述】:我正在设计一个涉及检查促销代码的应用。我已经研究过(谷歌),但我找不到可以解释解决类似问题的资源,或者可以翻译成这个问题的问题。
表:用户
ID、姓名、电子邮件等
表格:代码(获奖代码)
ID、代码、值
表格:SubmittedCodes(用户提交的代码)
Id、User_id、代码、时间戳
用户会检查他提交的代码在哪里有任何价值,如果特定用户想要提交太多代码,提交的代码会被记住。 验证将被退回查看。保存在 SubmittedCodes 表中。
请问我的做法是否正确?我应该使用自定义验证吗?我应该构建自定义助手吗?也许是一些特定的 mysql 查询?
我不想让任何人为我编写代码,只需要朝着正确的方向轻推。我想我知道如何使用搜索引擎,但我可能漏掉了一些。
我已经完成了关于自定义验证的简单教程,但这个教程有其他目标,我无法将它用于我的要求。
目前我已经建立了带有消息和管理员的注册/注册用户管理系统,但这部分/模块有点困难。
我上面提到的资源链接: https://laravel.com/docs/5.2/validation#custom-validation-rules https://scotch.io/tutorials/laravel-form-validation
【问题讨论】:
【参考方案1】:正如@haakym 所述,您可以使用exists 规则首先验证该代码是否存在。
$this->validate($request, [
'user_submitted_code' => 'exists:codes,code'
]);
完成后,您需要检查该代码是否已被特定用户使用。
$check = SubmittedCodes::where(
['user_id', $user_id],
['code', $user_submitted_code]
)->exists();
【讨论】:
【参考方案2】:我无法完全理解您的问题,但根据我收集的信息(如果我错了,请纠正我)您希望用户提交代码,如果它与代码表中的代码匹配,则存储它在提交的代码表中,对吧?
在这种情况下,您可以使用exists
规则,因为您正在检查如果代码表中存在代码。
因此,在您的表单提交验证器中,您将添加如下规则:
'user_submitted_code' => 'exists:codes,code'
如果字段名称与数据库中的列名称匹配,您也可以简写它
'code' => 'exists:codes'
希望对您有所帮助!如果我没有解决您的问题,请发表评论。
【讨论】:
以上是关于Laravel 5 自定义验证 - 自定义 MySQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 5 中使用表单请求验证时如何添加自定义验证规则