1

Laravel 5.2 アプリの required:unique バリデーターを、特定の user_id のテーブル結果のみに対して「slug」列の一意性をチェックするように制限しようとしています。つまり、スラッグは一意である必要がありますが、ユーザーごとにのみ必要です。次のコードを使用して、 store() 関数で機能しています。

'slug' => 'required|unique:contents,slug,NULL,id,user_id,' . Auth::id()

それはうまくいきます。ただし、update() 関数を同じように動作させることはできません。これは、現在更新中のエントリの結果に対して一意のチェックをバリデーターに停止させることができないためです。私が現在使用しているコードは次のとおりです。

'slug' => 'required|unique:contents,slug,' . $content->slug . ',id,user_id,' . Auth::id()

そのコードは私には正しく見えませんが、いくつかのバリエーションを試しましたが、どれも思い通りに動作しません。私の考えでは、これはうまくいくと思います:

'slug' => 'required|unique:contents,id,' . $content->id . ',user_id,' . Auth::id()

しかし、そうではありません。私の問題がここにあることを誰か知っていますか?どんなガイダンスでも大歓迎です。

4

1 に答える 1

7

モデル内の実際の属性名を知らずに正しい答えを出すのは困難です。バリデータは次のパラメータをサポートしています

unique:{0},{1},{2},{3},{4},{5}

どこ:

{0}= 検証中のテーブル名

{1}= 検証中の列名

{2}{0}=検証をスキップする行の ID 値

{3}= 主キー列の名前{0}

{4}= の追加フィルター列の名前{0}

{5}= 追加フィルター列の値

{0}したがって、 、{1}{2}およびの値が明確にあるようです{5}{3}あなたの質問情報から、との正しい値が何であるかわかりません{4}。推測するとしたら、次のようなバリデータ ルールを記述します。

'slug' => 'required|unique:contents,slug,' . $content->id . ',id,user_id,' . Auth::id()
于 2016-08-18T20:12:55.457 に答える