ホームページ >バックエンド開発 >PHPチュートリアル >Laravelスキル クエリビルダーオーバーレイチェーン呼び出しメソッド解説
この記事では主に、laravel スキルにおけるクエリ ビルダー クエリ ビルダー オーバーレイ チェーン コールに関する関連情報を紹介します。この記事ではサンプル コードを通じて詳細に紹介しており、あらゆる人の学習や仕事に一定の参考学習価値があります。必要な場合は、下記をご覧ください。
クエリ ビルダーの概要
Laravel クエリ ビルダー (クエリ ビルダー) は、データベース検索を確立および実行するための便利で流暢なインターフェイスを提供します。
##PDO パラメーター バインディングを使用して、アプリケーションを SQL インジェクションから保護します。したがって、受信パラメータで特殊文字をエスケープする必要はありません。基本的に、すべてのデータベース操作が満たされ、サポートされているすべてのデータベース システムで実行できますはじめに
今日は、laravel クエリコンストラクターの小技を紹介します。公式ドキュメントのサンプルには詳しく記載されていません。高度なスキルではありません。いいえ、知っている学生は見てみてください。 ビジネス コードでは、さまざまな条件に基づいてクエリが実行されることがよくあります。簡単な例として、新しい順に並べられたユーザー リストをクエリしたいとします。条件としてステータスとタイプが存在する場合があります。 これは最初に私が書いた方法ですif($status && $type) { $users = User::where('status', $status)->where('type', $type)->latest()->get(); } else if ($status) { $users = User::where('status', $status)->latest()->get(); } else if ($type) { $users = User::where('status', $type)->latest()->get(); } else { $users = User::latest()->get(); }このコードは本当に醜いです、 -> などの一般的なコードがたくさんあります;latest() ->get() を 4 回記述します。製品が「今日は順番に並べ替えたい」と指示した場合、4 か所を変更する必要があります。エディターを使用して簡単に変更できますが、これは最も単純な例にすぎないことを知っておく必要があります。 ドキュメントを読むと、条件判断のための when メソッドがありますが、クロージャの束は理想的ではありません。もっとエレガントな書き方があるに違いないと強く信じていたので、stackoverflow で検索したところ、案の定、全能の Waiguoren が答えをくれました。 改善された記述方法:
$query = User::query(); // 如果用DB: $query = DB::table('user'); if ($status) { $query->where('status', $status); } if ($type) { $query->where('type', $type); } $users = $query->latest()->get();変数を使用してクエリ コンストラクター インスタンスを保存し、それに制約を重ねて、最後にコレクションを取得します。公開部分が最初と最後に置かれていて構成が明確ですが、判断なのでしょうか? また、 $query をパラメータとしてメソッドまたは関数に渡し、共通のロジックをカプセル化して複数の呼び出しを容易にすることもできます。
function foo($query) { $query->with(['girl', 'gay']) ->latest() ->get(); } $query = User::query(); $users = foo($query);
この書き方の注意点は、where on $queryなどの制約メソッドを呼び出すとクエリが変更されてしまうため、場合によっては事前にクエリのクローンを作成しておく必要があることです。 たとえば、タイプ 1 とタイプ 2 のユーザーを同時に取得したいとします。
$query_1 = User::query(); $query_2 = clone $query_1; $users_1 = $query_1->where('type', 1)->latest()->get(); $users_2 = $query_2->where('type', 2)->latest()->get(); // 错误 $users_2 = $query_1->where('type', 1)->latest()->get(); // 这样写得到得是type = 1 and $type = 2これは書かれていませんが、 laravel ドキュメントの例で説明されていますが、DB ファサードのテーブル メソッドを使用してクエリを開始できます。このテーブル メソッドはクエリ テーブルのクエリ ビルダー インスタンスを返すため、クエリ時にさらに多くの制約を連鎖させ、get メソッドを使用して最終結果を取得できます
#概要参考:
興味があるかもしれない記事:
フィボナッチ数列を実装するための PHP コードの共有二分法に基づく配列検索関数の PHP 実装の例説明phpのクラスとオブジェクトの詳しい説明以上がLaravelスキル クエリビルダーオーバーレイチェーン呼び出しメソッド解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。