【问题标题】:how can i solve the unique field error in laravel?如何解决 laravel 中的独特字段错误?
【发布时间】:2020-10-08 07:01:12
【问题描述】:
'call_signs' => [
    'required', 'array', 'min:1',
    'call_signs.*.call_sign' => [
        Rule::unique('call_signs', 'call_sign')->whereNull('deleted_at')->ignore($user->id, 'user_id')
    ]
],

这是我的唯一代码 它给了我错误

call_signs 是一个数组

BadMethodCallException 方法 Illuminate\Validation\Validator::validateUnique:callSigns,callSign,"12",userId,deletedAt,"NULL" 不存在。

我的 Callsign 表有 softDelete

【问题讨论】:

  • 你能展示你的模型吗?
  • 命名空间应用\模型;使用 Illuminate\Database\Eloquent\Model;使用 Illuminate\Database\Eloquent\SoftDeletes;类 CallSign 扩展模型 { 使用 SoftDeletes;受保护的 $fillable = ['user_id', 'call_sign', 'default_flag']; public function user() { return $this->belongsTo('App\Models\User', 'user_id', 'id'); } }@Darick

标签: php laravel validation unique rules


【解决方案1】:

Laravel 的唯一验证规则仅提供 ignore 方法,而不提供 whereNull 方法。请注意,whereNull 方法是 Database Query Builder 的一部分。

此外,检查表上软删除的唯一性通常不好。您应该考虑对此类用例使用硬删除。

无论如何,如果您出于某种原因想要使用,您可以创建自己独特的自定义验证规则。您可以阅读更多关于它的信息here,还包含示例。

【讨论】:

  • 我已经从规则中删除了 whereNull 但它仍然不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 2011-12-08
  • 2016-01-29
  • 2021-09-15
  • 2018-01-22
  • 1970-01-01
  • 2019-06-12
相关资源
最近更新 更多