Laravel 5自定义验证 - 自定义MySQL查询

时间:2016-05-06 13:04:06

标签: mysql validation laravel

我正在设计一款涉及查看促销代码的应用。我已经研究过(谷歌),但我找不到解释类似问题的解决方案的资源,或者可以转化为这个问题的问题。

  

表:用户

     

ID,姓名,电子邮件等

     

表:代码(获奖代码)

     

ID,代码,值

     

表:已提交的代码(用户提交的代码)

     

Id,User_id,代码,时间戳

用户将检查他提交的代码的位置是否具有任何值,如果特定用户想要提交过多代码,则会记住提交的代码。 验证将被重新审视。保存在SubmittedCodes表中。

我想问你的方法是否正确?我应该使用自定义验证吗?我应该建立自定义助手吗?也许某些特定的MySQL查询?

我不希望任何人为我编码,只需要朝着正确的方向轻推。我想我知道如何使用搜索引擎,但我可能错过了一些。

我已经完成了关于自定义验证的简单教程,但是这个有其他目标,我无法将其用于我的要求。

目前我已经使用消息和管理员构建了sign / up用户管理系统,但这个部分/模块有点困难。

我上面提到的资源链接: https://laravel.com/docs/5.2/validation#custom-validation-rules https://scotch.io/tutorials/laravel-form-validation

2 个答案:

答案 0 :(得分:0)

我无法完全理解您的问题,但是从我收集到的内容(如果我错了请纠正我),您希望用户提交代码,如果它与代码表然后将其存储在提交的代码表中,对吗?

在这种情况下,您可以使用exists规则,因为您正在检查 ,如果 代码表中存在代码。

因此,在您的表单提交验证器中,您将添加如下规则:

'user_submitted_code' => 'exists:codes,code'

如果字段名称与数据库中的列名称匹配,您也可以将其缩写为

'code' => 'exists:codes'

希望有所帮助!如果我没有解决您的问题,请发表评论。

答案 1 :(得分:0)

如@haakym所述,您可以使用exists规则来验证该代码是否确实存在。

$this->validate($request, [
    'user_submitted_code' => 'exists:codes,code'
]);

完成后,您需要检查特定用户是否已使用该代码。

$check = SubmittedCodes::where(
    ['user_id', $user_id],
    ['code', $user_submitted_code]
)->exists();