Laravel 5.3 - 具有格式检查的复杂唯一规则

时间:2017-03-06 18:12:56

标签: laravel laravel-5.3

因此,作为我所参与的项目的一部分,我们允许人们添加“关注者”以通知客户合同的更新。这些关注者可能有多个电子邮件地址和电话号码,使用电子邮件地址(email_addresses.email)和电话号码(phones.number)的多态表结构。电话号码严格存储为10位数。

我正在尝试添加验证规则,以便在电子邮件地址或电话号码已与此特定记录上的其他关注者一起使用时引发错误。我会在擦除用户输入的处理阶段执行此操作,但我不知道如何将错误消息添加到错误包中并将验证作为失败进行检查。

现有规则:

'emails' => 'array',
'emails.*' => ['email'],
'phones' => 'array',
// anything with 10 digits, since everything else is being stripped off
'phones.*' => ['string', 'regex:/(?=(?:.*[0-9]){10})/'],

我看了Rule::exists()并发现没有什么可以检查相反的情况,我看了Rule::unique(),但这似乎没有考虑到这种复杂程度。我可能会抓住所有现有的电子邮件和电话号码与not_in一起使用,但我试图不在此级别格式化数据(例如,电话号码可能永远不会匹配,因为它可能是提交格式化但存储被剥离所有格式化字符。)

我该如何实现?

0 个答案:

没有答案