今回は、Laravel での unique および既存の検証ルールの最適化手順について詳しく説明します。Laravel での unique および既存の検証ルールを最適化するための 注意事項 について、実際のケースを見てみましょう。
はじめにLaravel は、アプリケーションの入力データを検証するためのさまざまなメソッドを提供します。デフォルトでは、Laravel の
Controller基本クラスは ValidatesRequests トレイトを使用します。これは、さまざまな強力な検証ルールを通じて受信 HTTP リクエストを検証する便利なメソッドを提供します。 Laravel の ValidatesRequests トレイトを通じてリクエストを検証するのは非常に便利で、BaseController クラスに自動的に導入されます。 exitsts() と unique() の 2 つのルールは非常に強力で便利です。
使用中にデータベース内の既存のデータを検証する必要があります。通常は次のように記述されます。
// exists example 'email' => 'exists:staff,account_id,1' // unique example 'email' => 'unique:users,email_address,$user->id,id,account_id,1'
上記の記述方法の構文は、ほぼ毎回使用するたびに覚えてはいけません。ドキュメントを確認してください。ただし、Laravel バージョン 5.3.18 以降では、新しい Rule クラスを通じて両方の検証ルールを簡素化できるようになりました。
以下の使い慣れた連鎖構文を使用して同じ効果を実現できます:
'email' => [ 'required', Rule::exists('staff')->where(function ($query) { $query->where('account_id', 1); }), ],
'email' => [ 'required', Rule::unique('users')->ignore($user->id)->where(function ($query) { $query->where('account_id', 1); }) ],
両方の検証ルールは次の連鎖メソッドもサポートしています:
良いニュースは、古い書き込みメソッドがまだ完全にサポートされていることです。新しい書き込みメソッドは、実際に formatWheres メソッドを通じて下部で古い書き込みメソッドに変換します:
protected function formatWheres() { return collect($this->wheres)->map(function ($where) { return $where['column'].','.$where['value']; })->implode(','); }
この記事の場合、さらに php 中国語 Web サイトの他の関連記事にも注目してください。
推奨読書:
PHP二重リンクリストの使用方法の詳細な説明PHPでforeachを使用して配列を変換する手順の詳細な説明以上がLaravel における固有の既存の検証ルールの最適化手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。