Laravel 5 在laravel 5中使用唯一列更新模型

Laravel 5 在laravel 5中使用唯一列更新模型,laravel-5,Laravel 5,我试着跟随,这似乎是我想要的,但没有运气 我有一个页面模型,它有一个递增的id、一个标题、一个slug(unique)和一个html列。我希望能够更改标题、slug和html字段。我已尝试添加规则: 'slug' => 'required|unique:pages,slug,{$this->slug}', 对于我的补丁请求,但是当我提交我的表单(使用相同的slug)时,我得到一个错误,它已经出现了。如果我更改slug,标题和html也会更改,但slug不会更改 理想情况下,我宁愿让

我试着跟随,这似乎是我想要的,但没有运气

我有一个
页面
模型,它有一个递增的id、一个标题、一个slug(unique)和一个html列。我希望能够更改标题、slug和html字段。我已尝试添加规则:

'slug' => 'required|unique:pages,slug,{$this->slug}',
对于我的
补丁
请求,但是当我提交我的表单(使用相同的slug)时,我得到一个错误,它已经出现了。如果我更改slug,标题和html也会更改,但slug不会更改

理想情况下,我宁愿让slug自动生成并在后台更新,但我也无法实现这一点


更新模型时如何允许更改唯一字段,或如何自动生成它?

您需要提供带有三个参数的
唯一
规则以添加异常

  • 包含异常的表的名称(页)
  • 异常的列名(slug)
  • 包含异常的行的主键。(id)
  • 在您的情况下,主键是id字段而不是slug字段

    'slug' => 'required|unique:pages,slug,' . $this->id
    

    $this->id
    为空。如何获取id?这将取决于您如何进行验证。您正在使用验证器类吗?在控制器中处理它?URI中是否包含ID<代码>$this->route('id')如果slug在URI中,您可以使用slug检索行(我假设它是唯一的),然后从雄辩的对象返回id。使用类似于
    Page::where('slug',$this->route('slug'))->first()->id
    ?我最终使用
    $this->route('Page')->id
    。我在routes.php文件中使用了模型绑定,所以我只需要抓取它,它是我准备好的
    页面
    模型。