【问题标题】:Symfony2 Case sensitive Unique validation on 2 fieldsSymfony2 区分大小写 2 个字段的唯一验证
【发布时间】:2015-10-11 11:30:06
【问题描述】:

symfony 初学者,我有一个 calss 学院

class Institutes {
    protected $id;
    protected $name;
    protected $city;
}

我想要每个城市唯一的研究所名称。换句话说,防止用户在同一个城市输入多个机构。 我知道有一个unique entity 选项,但这无济于事。因为不同城市的机构名称可以相同,但same city中不能。

我读到了一些关于使用存储库类进行自定义验证的内容,但不知道它是如何工作的。 例如

      name       |   city   | valid  |
-----------------+-------------------+
DHQ Hospital    | Attock    | t      |
dhq Hospital    | Attock    | f      | already exists in the city
dHQ HospITal    | Attock    | f      | already exists in the city
DHQ Hospital    | Islamabad | t      |

【问题讨论】:

    标签: php postgresql validation symfony symfony-forms


    【解决方案1】:

    使用UniqueEntity 验证器,它可以检查字段组合,而不仅仅是单个字段是唯一的。在您的情况下,您可以使用(使用注释):

    use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
    
    /**
     * @ORM\Entity
     * @UniqueEntity(fields = {"name", "city"})
     */
    class Institutes
    {
    ...
    }
    

    【讨论】:

    • 我用过,但是case sensitive uniqueness of name
    • 我不太确定,但我认为如果您将数据库配置为不区分大小写(例如,使用 utf8_general_ci 排序规则,ci 不区分大小写),它应该已经可以工作了
    • 我试过了,但是这不允许我为不同的城市输入相同的机构名称
    • 有什么方法可以执行我的自定义查询或视图来检查此验证并返回真或假结果。我在 Django 中做过这些东西,但不知道如何在 symfony2 中做到这一点。
    猜你喜欢
    • 2012-12-09
    • 1970-01-01
    • 2017-04-15
    • 2012-07-11
    • 1970-01-01
    • 2021-07-11
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多