代码之家  ›  专栏  ›  技术社区  ›  Simpledev

Laravel唯一验证规则,但不起作用

  •  0
  • Simpledev  · 技术社区  · 6 年前

    带有except列的Laravel唯一验证规则在更新时不起作用,我的代码有什么问题?

    public function update(Request $request, Article $article)
    {
        abort_if($article->user_id !== $request->user()->id, 403);
    
        $article = $request->user()->articles()->update($request->validate([
            'title' => [
                'required',
                Rule::unique('articles', 'title')->ignore($article->id)
            ],
            'content'=>'required|min:90',
        ]));
    
        return redirect('articles/'.$article->id)->withSuccess('Article saved.');
    }
    

    6.4.0

    2 回复  |  直到 6 年前
        1
  •  1
  •   Pedro Costa    6 年前

    您可以将项目的整个实例传递给验证,如下所示:

    Rule::unique('articles')->ignore($article);
    

    因为你已经在说要检查哪一列了。

    https://laravel.com/docs/6.x/validation

        2
  •  1
  •   Ben96    6 年前

    从中删除标题

    Rule::unique('articles', 'title')->ignore($article->id)
    

    ...
    $article = $request->user()->articles()->update($request->validate([
            'title' => [
                'required',
                Rule::unique('articles')->ignore($article->id)
            ],
            'content'=>'required|min:90',
        ]));
    ...
    

    更多信息,请检查 rule-unique

        3
  •  1
  •   apokryfos    6 年前

    $request->user()->articles()

    相反,请执行以下操作:

    $article->update($request->validate([
        'title' => [
            'required',
            Rule::unique('articles', 'title')->ignore($article->id)
         ],
        'content'=>'required|min:90',
    ]));