【问题标题】:Laravel validate form input with databaseLaravel 使用数据库验证表单输入
【发布时间】:2017-05-08 20:28:24
【问题描述】:

我有一个用于登记访客的对话框。在提交时,我想检查数据库是否存在值。我在构建验证器时遇到了一些问题。

有两张桌子。

table: visitor
- id
- name
- signed_agreement
- ...

table: visit_type
- id
- name
- require_agreement

在提交表单时,我发送了两个值;访客 id 和 visit_type id。 如果 visit_type require_agreement 列等于 1,则访问者的 signed_agreement 也应该为 1。如果不是,则验证应该失败。

有什么建议吗?

【问题讨论】:

    标签: laravel laravel-validation


    【解决方案1】:

    您可以使用 exists:table,column 来检查该值是否存在于 db 上。您必须为每个表和字段对添加不同的验证。

    【讨论】:

    • 那部分我理解,但我想检查不属于表单的 2 个字段。如何检查 visit_type.require_agreement == 1 和 visitor.signed_agreement == 1
    • 看起来与验证无关。您应该将 where 过滤器添加到您的 Eloquent 或数据库查询中。你是 Laravel 的新手吗?如果我知道我可以指导你更详细。
    • 所以我应该让表单验证它是什么并在商店控制器中进行一些自定义验证?创建一个 visit_type / visitor 关系,可能还有它自己的方法,例如;访客->hasSignedAgreement() ?
    • 您是否通过表单输入获取访问者 ID 和访问类型 ID?您的请求输入到底是什么?您的意思是您只获得访问者 ID,但想要针对访问者 ID 和访问类型 ID 检查相同的数据?
    • 当我提交表单时,我会发送visitor.id 和visit_type.id。我想要做的是查找visit_type.id 并获取visit_type.require_agreement。如果 visit_type.require_agreement 列等于 1,则表示访问者需要签署协议。然后它应该找到访问者并检查visitor.signed_agreement 列是否设置为1。如果是,则表单有效。
    猜你喜欢
    • 2017-01-06
    • 2013-05-02
    • 2015-09-24
    • 2015-05-23
    • 2014-06-07
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多