2017-11-16 4 views
1

複数のテーブルでユニークなチェックと、私は新しいフィールドを作成するためにこれを行う:アップデートの検証laravelで

//store function 

'slug' => 'required|unique:articles,slug|unique:zones,slug 

それはうまく動作します。

更新のために何ができますか?

私はこれをテスト:

public function update(request $request, Sight $sight) 
    { 
     $validator = Validator::make($request->all(), [ 
     'slug' => 'unique:articles,slug,'.$sight->id.'|unique:zones,slug,'.$sight->id.' 

しかし、それは重複したスラグを可能にしました。

+0

あなたは記事IDを渡す必要はありませ視力1とゾーンに同じ。 – Maraboc

答えて

0

the docsによると、これを行う方法は次のとおりです。

$validator = Validator::make($request->all(), [ 
    'slug' => [ 
     Rule::unique('articles')->ignore($sight->id, "slug"), 
     Rule::unique('zones')->ignore($sight->id, "slug") 
     ] 
]); 
+0

あなたは視力のない記事IDを渡さなければならないし、ゾーンのそれと同じではないのですか? – Maraboc

+0

@Marabocはあなたが何をする必要があるかによって異なります。元の検証では、両方のテーブルで同じスラッグフィールドが一意である必要があるため、このケースが異なると思われる理由はありません。別のテーブルにユニークなスラッグが必要な場合。 – apokryfos

+0

はい、私は同意しますが、ドキュメントに '一意のチェック中に与えられたIDを無視したい場合があります'と彼らが与える例は '' email '=> Rule :: unique( 'users') - > ignore($ user-> id、 'user_id') 'ユーザテーブルでは、指定された' $ user-> id'を無視します。記事テーブルでは 'someArticleId'を無視します!! – Maraboc