【问题标题】:Laravel Unique Validation Based on Multiple Column Data Value基于多列数据值的 Laravel 唯一验证
【发布时间】:2022-01-30 21:28:05
【问题描述】:

在这种情况下,我的电话号码将基于我的domain_id 是唯一的。电话号码在电话列中可以有多个,但其明显取决于 domain_id 列。

示例:01303062727 这个数字是电话列的两倍,但它们具有不同的 domain_id 值。

如何验证此规则?

【问题讨论】:

  • 您不能在将电话号码插入数据库之前将其提取到数据库中,然后根据结果接受或拒绝它吗?
  • 其实我现在就在做这个! @KevinY
  • 只需创建一个自定义验证规则(请参阅laravel.com/docs/8.x/validation#custom-validation-rules),然后在此处执行您的逻辑。究竟是什么问题?
  • 不知何故,我通过这样做解决了这个问题, Rule::unique('customers', 'phone')->where(function ($query) { $query->where('phone' , $this->phone) ->where('domain_id', request()->get('domain_id')); })->ignore($this->id)

标签: php laravel validation eloquent


【解决方案1】:

在这里你可以利用 laravel 提供的独特规则。 你的代码会是这样的:

'phone_number' => Rule::unique('users')->where(function ($query) {
    return $query->where('domain_id', $domain_id);
})

显然,您可以将 $domain_id 变量与您的输入或您想要的任何其他方式一起传递。此代码将查询范围限定为仅针对具有特定值的 domain_id 的记录制定唯一性规则。因此允许重复的数字,但对于不同的域 id

【讨论】:

  • 是的,我是这样做的。 @AlirezaSalehi Rule::unique('customers', 'phone')->where(function ($query) { $query->where('phone', $this->phone) ->where('domain_id', request()->get('domain_id')); })->ignore($this->id)
猜你喜欢
  • 2015-07-09
  • 2014-08-08
  • 2018-10-25
  • 2015-11-18
  • 2021-04-28
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 2021-09-11
相关资源
最近更新 更多