6

laravel 4 のドキュメントでは、独自のフィールド検証について言及しています。ここでは、一意の検証に where 句を含める方法について説明しています。一意のテーブルの単一の WHERE 句の例:

$validator = Validator::make(
    array(
        'name' => 'John Doe'
    ),
    array(
        'name' => 'unique:table,field,NULL,id,field1,value1'
    )
);

今、私はこれが次のようなことをすると仮定します:

"SELECT id FROM table WHERE field = 'John Doe' AND field1 = value1 LIMIT 1"

次に、このクエリが結果を返すかどうかを確認し、そうでない場合はバリデータを渡します。

そこで、where句をさらに追加する方法があるかどうか疑問に思っていましたか? もしそうなら、どのように?

4

1 に答える 1

16

私の元の質問の終わり:

それらをスタックすることはできますか、そうでない場合はどのように検証を作成する必要がありますか? 「、field2、value2、field3、value3」などを追加できますか。このように積み重ねますか?

答え

はい、以下のように積み重ねることができます。したがって、一意のバリデーターに複数の where 句を追加したい場合は、次のようにします。

'name' => 'unique:table,field,NULL,id,field1,value1,field2,value2,field3,value3'


例外

Laravel documentationによると、一意のルールで指定された 3 番目のパラメーターは、except パラメーターです。

unique:table,column,except,idColumn

元の質問とはあまり関係がないため、このパラメーターを NULL のままにしました。この NULL の機能が一意のルール内にあることを知りたい人のために、詳しく説明しましょう。

except パラメータは、特定の ID を無視するように一意のルールを強制します。したがって、NULL として指定すると、すべてのレコードに対してチェックが行われます (つまり、何も無視されます)。

例:ユーザーの電子メールを一意にしたいが、管理者ユーザーも同じ電子メールの通常のユーザー アカウントを持っているとします。管理者ユーザーが作成した最初のユーザーであると仮定すると、ID は 1 です。したがって、新しいユーザーを作成するときにできることは次のとおりです。

'name' => 'unique:users,email,1,id'
于 2013-10-15T09:31:18.757 に答える