ホームページ  >  記事  >  バックエンド開発  >  LaravelでRule::uniqueを使用して複数列の一意の検証を実装する方法は?

LaravelでRule::uniqueを使用して複数列の一意の検証を実装する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-29 05:21:021039ブラウズ

How to Implement Multi-Column Unique Validation Using Rule::unique in Laravel?

Laravel での複数列の一意の検証に Rule::unique を使用する

Laravel アプリケーションには、「servers」という名前のテーブルがあります。 「ip」と「hostname」の 2 つの列があります。これら 2 つの列の組み合わせが一意であることを確認して、エントリの重複を防ぎたいと考えています。 「ip」列の検証ルールはすでに実装していますが、このロジックを拡張して「hostname」列も含めることを目指しています。

この複数列の一意の検証を実現するには、Laravel のルール::ユニーク メソッド。検証ルールの修正バージョンは次のとおりです:

<code class="php">$messages = [
    'data.ip.unique' => 'Given ip and hostname are not unique',
];

Validator::make($data, [
    'data.ip' => [
        'required',
        Rule::unique('servers')
            ->where(function ($query) use ($ip, $hostname) {
                return $query->where('ip', $ip)
                    ->where('hostname', $hostname);
            }),
    ],
], $messages);</code>

説明:

  • Rule::unique('servers') : 検証ルールを「servers」テーブルに適用することを指定します。
  • where: 追加の基準に基づいて一意のチェックをフィルタリングするために使用されます。この場合、「ip」列と「hostname」列の両方でフィルタリングしています。
  • $ip** および **$hostname: これらの変数には、指定した値が含まれていると想定されます。
  • $messages: 検証が失敗したときに表示されるエラー メッセージをカスタマイズできるオプションの配列。

この更新された検証ルール「ip」と「hostname」の値の組み合わせが「servers」テーブル内で一意であることを保証し、同じ IP とホスト名の重複エントリを効果的に防止します。

以上がLaravelでRule::uniqueを使用して複数列の一意の検証を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。