【问题标题】:Laravel 5.3 update request with unique rule with exceptionLaravel 5.3 更新请求具有唯一规则,但有例外
【发布时间】:2023-04-03 12:22:01
【问题描述】:

我有更新页面的请求。添加新页面时的请求是这样的:

'title'=>'required|max:70|unique:pages',

但是当我更新页面标题必须是唯一的,但需要检查所有其他标题,除了已经输入的标题。 我在 Google 上搜索了所有可能的解决方案,但没有任何效果。

我试过了:

'title'=>"required|max:70|unique:pages, title,{$this->id}",
'title'=>'required|max:70|unique:pages, title,'.$this->id,
'title'=>'required|max:70|unique:pages, title,'.$this->input('id'),

规则在规则方法内

public function rules()
{
    return [
    'title'=>'required|max:70|unique:pages, title,'.$this->id,
    ...
    ]

我收到此错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column ' title' in 'where clause' (SQL: select count(*) as aggregate from `pages` where ` title` = test and `id` <> )

在我的 mysql 中,我有 id(小写)列,它是主键和标题列(也是小写)。

【问题讨论】:

    标签: php laravel laravel-5.3 laravel-request


    【解决方案1】:
    SQLSTATE[42S22]: Column not found: 1054 Unknown column ' title'
    

    它似乎正在搜索一个名为“title”的列,这可能很愚蠢,但请仔细检查该列名是否在开头没有空格。

    【讨论】:

      【解决方案2】:

      你这里有一个错误:

      public function rules()
      {                                          This space is causing trouble
                                                 | 
          return [
          'title'=>'required|max:70|unique:pages, title,'.$this->id,
          ...
          ]
      

      应该是

      public function rules()
      {                                          Space removed
                                                 | 
          return [
          'title'=>'required|max:70|unique:pages,title,'.$this->id,
          ...
          ]
      

      【讨论】:

      • 是的,现在它没有显示任何错误,但就像它不排除这个ID一样。它给了我验证错误。标题已被占用。
      • 那要看$this是什么,你的模型有rules()方法吗?如果不是,您从错误的班级获取 id...所以这是一个不同的问题,请打开一个不同的问题并提供更多信息。
      • antonio,很可能是表单请求
      • 你应该dd($this-&gt;id)看看这是否是同一个标题id
      猜你喜欢
      • 2014-04-19
      • 1970-01-01
      • 2015-03-27
      • 2017-06-13
      • 2020-09-13
      • 2018-06-26
      • 2020-07-17
      • 1970-01-01
      相关资源
      最近更新 更多