Pipeline は Laravel の複数条件クエリをどのように処理しますか?
次のチュートリアルコラムでは、Pipeline が Laravel の複数条件クエリを処理する方法を紹介します。 元のタイトル: Pipeline を使用した Laravel Eloquent Query Filter 元のリンク: hafiqiqmal93.medium.com/laravel-eloquent-query-sfilter-using-pipeline-7c6f2673d5da
は、Laravel の特に便利な機能の 1 つです。パイプラインは、ミドルウェアなど、Laravel で最もよく使用されるコンポーネントの 1 つでもあります。
pipeline
Laravel の便利な機能の 1 つは、パイプライン
です。パイプラインは、ミドルウェアなど、Laravel で最もよく使用されるコンポーネントの 1 つです。基本的に、パイプラインを使用すると、タスクのスタックを介してオブジェクトを渡し、コールバックを介して結果を取得できます。基本的には、パイプを介してタスク スタックにオブジェクトを渡し、コールバックを介して結果を取得できます。
クエリ フィルタリングにおけるパイプラインの利点は、次のとおりです。大量のたわごとを数行に減らすことができます。パイプラインを使用する前は、通常、ユーザー モデルの Eloquent インスタンスを取得し、クエリ文字列に基づいていくつかの条件を結合するコントローラーを作成しました。クエリ フィルタリングのパイプラインの利点は、大量の行を数行に削減できることです。パイプラインを意識しないため、通常はコントローラーをセットアップし、ユーザー モデルの Eloquent のインスタンスを取得します。を選択し、クエリ文字列に基づいて条件を適用します。
以下の Shishan クエリ メソッドを見てみましょう。以下のクエリを見てみましょう。
$query = User::query();if ($request->username) { $query->where('username', 'LIKE', "%$request->username%");}if ($request->email) { $query->where('email', 'LIKE', "%$request->email%");}if ($request->address) { $query->where('address', 'LIKE', "%$request->address%");}if ($request->occupation) { $query->where('occupation', 'LIKE', "%$request->occupation%");}return $query->get();
欠点は明らかです。フィルター条件が山のように積み重なり、重複コードが大量に表示されます。 。さらに、コードの保守性も少し頭の痛い問題です。欠点は、明らかにフィルター条件が増大し続けることと、他のクエリに対する同じフィルターの重複が発生することです。一方で、コードの保守性は頭痛の種です。
パイプラインのエレガントな処理方法を見てみましょうパイプラインがヒーローになる場所があります
return User::query()->filter([ UsernameFilter::class, EmailFilter::class, AddressFilter::class, OccupationFilter::class])->get();
シンプルで短いですよね。次の手順を見てください。シンプルで短いですよね?その前に、
1.「Filterable」という名前の特性クラスを作成し、スコープ メソッドを作成しますFilterable
という名前の特性を作成し、スコープを作成しますなどのそれを次に、ユーザー モデル
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">class Filterable{ public function scopeFilter($query, array $through) { return app(Pipeline::class) ->send($query) ->through($through) ->thenReturn(); }}</pre><div class="contentsignin">ログイン後にコピー</div></div>
これで、モデルの再利用で問題なく使用できるようになります。ユーザー モデル
class User { use Filterable; }
2などの任意のモデルで使用します。フィルターを作成します。例:UsernameFilter
2. 例:
UsernameFilter
などのフィルターを作成します。使い方はこんな感じですclass UsernameFilter { public function handle($query, $next) { if (request()->mobile_phone) { $query->where('username', request()->mobile_phone); } return $next($query); }}ログイン後にコピー手順:
User::query()->filter([UsernameFilter::class])->get();
or
or
パイプラインへのアクセスをさらに容易にしたい場合は、属性を渡すこともできます。あなたはまだパイプですプロパティを渡すことで使用できます。
class StringFilter { public function handle($query, $next, $column) { if (request()->{$column}) { $query->where($column, 'LIKE', request()->{$column}); } return $next($query); }}
このように使用します使用法これはまさにこのようなものです。
User::query()->filter([ 'StringFilter:username', 'StringFilter:email',])->get();
それをやり遂げて、エレガントに!完了。シンプルでクリーン
」 ##推奨: 「
最新の 5 つの Laravel ビデオ チュートリアル
以上がPipeline は Laravel の複数条件クエリをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









パイプを介したファイルの読み取りと書き込み: ファイルからデータを読み取り、パイプを介してデータを渡すためのパイプを作成します。 パイプからデータを受信して処理します。 処理されたデータをファイルに書き込みます。 ゴルーチンを使用してこれらの操作を同時に実行し、パフォーマンスを向上させます。

Laravel 9 と CodeIgniter 4 の最新バージョンでは、更新された機能と改善が提供されます。 Laravel9はMVCアーキテクチャを採用しており、データベース移行、認証、テンプレートエンジンなどの機能を提供します。 CodeIgniter4 は、HMVC アーキテクチャを使用してルーティング、ORM、およびキャッシュを提供します。パフォーマンスの面では、Laravel9 のサービスプロバイダーベースの設計パターンと CodeIgniter4 の軽量フレームワークにより、優れたパフォーマンスが得られます。実際のアプリケーションでは、Laravel9 は柔軟性と強力な機能を必要とする複雑なプロジェクトに適しており、CodeIgniter4 は迅速な開発や小規模なアプリケーションに適しています。

Laravel と CodeIgniter のデータ処理機能を比較します。 ORM: Laravel はクラスとオブジェクトのリレーショナル マッピングを提供する EloquentORM を使用しますが、CodeIgniter は ActiveRecord を使用してデータベース モデルを PHP クラスのサブクラスとして表します。クエリビルダー: Laravel には柔軟なチェーンクエリ API がありますが、CodeIgniter のクエリビルダーはよりシンプルで配列ベースです。データ検証: Laravel はカスタム検証ルールをサポートする Validator クラスを提供しますが、CodeIgniter には組み込みの検証関数が少なく、カスタム ルールの手動コーディングが必要です。実践例:ユーザー登録例はLarを示しています

初心者にとって、CodeIgniter は学習曲線が緩やかで機能は少ないですが、基本的なニーズはカバーしています。 Laravel は幅広い機能セットを提供しますが、学習曲線はわずかに急になります。パフォーマンスの点では、Laravel と CodeIgniter はどちらも良好なパフォーマンスを示します。 Laravel にはより広範なドキュメントとアクティブなコミュニティ サポートがあり、CodeIgniter はよりシンプルで軽量で、強力なセキュリティ機能を備えています。ブログアプリケーションを構築する実際のケースでは、Laravel の EloquentORM を使用するとデータ操作が簡素化されますが、CodeIgniter ではより手動の構成が必要になります。

Laravel - アーティザン コマンド - Laravel 5.7 には、新しいコマンドを処理およびテストするための新しい方法が付属しています。これには職人コマンドをテストする新しい機能が含まれており、そのデモについては以下で説明します。

大規模プロジェクト用のフレームワークを選択する場合、Laravel と CodeIgniter にはそれぞれ独自の利点があります。 Laravel はエンタープライズレベルのアプリケーション向けに設計されており、モジュール設計、依存関係の注入、強力な機能セットを提供します。 CodeIgniter は、速度と使いやすさを重視した、小規模から中規模のプロジェクトに適した軽量フレームワークです。複雑な要件と多数のユーザーを伴う大規模なプロジェクトには、Laravel のパワーとスケーラビリティがより適しています。単純なプロジェクトやリソースが限られている状況では、CodeIgniter の軽量で迅速な開発機能がより理想的です。

小規模なプロジェクトの場合、Laravel は強力な機能とセキュリティを必要とする大規模なプロジェクトに適しています。 CodeIgniter は、軽量さと使いやすさを必要とする非常に小規模なプロジェクトに適しています。

Laravel の Blade と CodeIgniter の Twig テンプレート エンジンを比較し、プロジェクトのニーズと個人的な好みに基づいて選択してください。Blade は MVC 構文に基づいており、適切なコード編成とテンプレートの継承を促進します。 Twig は、柔軟な構文、強力なフィルター、拡張サポート、セキュリティ サンドボックスを提供するサードパーティ ライブラリです。
