Laravel: 複数のテーブル列にわたる一意の検証の実現
組み合わせが一意である必要がある複数の列を含むテーブルを含むデータベースがあるシナリオの場合、Laravel アプリケーションでこの一意性制約を強制する必要があります。
そのような例の 1 つは、「ip」列と「hostname」列を持つ「servers」テーブルです。個々の 'ip' または 'hostname' の値が複数回出現する可能性がある場合でも、特定の 'ip' と 'hostname' の組み合わせが一意であることを確認したいとします。
ルールを使用した解決策:: unique()
この検証を実装するには、Rule::unique メソッドを利用します。このメソッドを使用すると、特定の列セットにカスタムの一意のルールを指定できます。以下に例を示します。
<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>
説明
このルールを実装すると、アプリケーションが 'servers' テーブルで 'ip' と 'hostname' の重複した組み合わせを確実に禁止することができます。
以上がLaravelで複数の列にわたって一意の検証を強制する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。