【问题标题】:Unique validation in Laravel depending by User ID [closed]Laravel 中的唯一验证取决于用户 ID [关闭]
【发布时间】:2019-10-31 17:41:38
【问题描述】:

在我的图书应用中,我对商店请求有以下规则:

'title' => 'unique:books,title|required|min:3|max:128,' . $this->user()->id.',user_id',

此时,使用 StoreRequest 中的验证规则,我收到错误“此标题已添加”(这是正确的,但标题是由其他用户添加的,而不是由尝试添加它的用户添加的) .

我想要实现的是对标题有一个独特的规则,但只针对这个用户集合。例如:2 个不同的用户可以声明相同的书名,但同一个用户不能复制它。

怎么了?

【问题讨论】:

  • 这显然是一个错字,这段代码是在max 规则而不是unique 规则中添加内容。

标签: laravel validation unique rules


【解决方案1】:

old Laravel 5 validation documentation 有例子:

'email' => 'unique:users,email_address,NULL,id,account_id,1'

这仍然适用于 Laravel 8。该示例检查一个唯一的 email_address,其中 account_id == 1;

current validation documentation (Laravel 8) 以这种方式显示示例:

'email' => Rule::unique('users')->where(function ($query) {
    return $query->where('account_id', 1);
})

在文档页面中搜索“Adding Additional Where Clauses”。

【讨论】:

    【解决方案2】:

    试试这个

    'title' => 'required|min:3|max:128|unique:books,title,NULL,id,user_id,'.Auth::user()->id,
    

    【讨论】:

    • 请对该代码添加一些解释 - 您更改了什么以及为什么?
    【解决方案3】:
    'title' => 'unique:books,user_id|required|min:3|max:128,' . $this->user()->id,
    

    似乎可以解决问题!谢谢

    【讨论】:

      【解决方案4】:

      试试这个。

      'title' => 'required|min:3|max:128|unique:books,title,user_id,'.Auth::user()->id,
      

      【讨论】:

      • 你有$this->user()->id,还是需要Auth::user()->id
      • Auth::user()->id 是我用于用户 ID 的内容。
      【解决方案5】:

      试试这个:

      'title'      => 'required|string|unique:tblbooks,id,'.$request->input('title'),
      

      【讨论】:

      • 这给了我SQLSTATE[42S02]: Base table or view not found: 1146 Table 'words. books' doesn't exist ... ???
      • 将 tblbooks 更改为包含标题和 id 字段的表的名称
      • 是的,我做到了。它看起来像这样:'title' => 'required|string|unique: books,title,user_id,'. $request->input('title'),
      • 尝试删除书籍后的标题,看看会发生什么。
      • 似乎它适用于这个版本:``` unique:books,user_id ```
      猜你喜欢
      • 2017-11-02
      • 2018-05-24
      • 2021-03-08
      • 2018-01-07
      • 2019-05-08
      • 1970-01-01
      • 2016-04-15
      • 2022-01-02
      • 2018-07-29
      相关资源
      最近更新 更多