目次
検索モデルを作成します
コントローラーの検索モデルを使用します
GridViewを使用して表示されます
高度なフィルタリングのヒント
ホームページ PHPフレームワーク YII Yiiで検索とフィルタリングを実装する方法は?

Yiiで検索とフィルタリングを実装する方法は?

Sep 21, 2025 am 02:33 AM
yii 検索フィルター

回答:Yii2で検索とフィルタリングを実装するには、検索モデルを作成し、ActivedAtaproviderとGridViewを使用する必要があります。まず、製品のProductearch Classを作成し、ルールを定義し、検索方法を実装し、負荷と検証を介してプロセスパラメーターを実装し、条件を追加します。コントローラーに検索モデルをインスタンス化し、リクエストパラメーターに渡します。 ActiveFormを使用してビューで検索フォームを構築し、GridViewはデータを表示し、Filtermodelを設定します。日付範囲や関連付けクエリなどの高度な機能をサポートして、データベースインデックスの最適化パフォーマンスを確保します。

Yiiで検索とフィルタリングを実装する方法は?

Yii(特にYii2)で検索とフィルタリングを実装するには、通常、 ActiveDataProviderおよびGridView (Webインターフェイス用)を使用して検索モデルパターンを使用します。このアプローチは、CRUD操作で一般的に使用されています。以下は、重要な手順とベストプラクティスです。

検索モデルを作成します

ほとんどのYII2アプリケーションは、GIIを使用するときにメインモデルと一緒に検索モデルを生成します。そうでない場合は、手動で作成します。たとえば、 Productモデルがある場合は、メインモデルを拡張し、検索ロジックを含むProductSearch Modelを作成します。

例: models/ProductSearch.php

クラスProductearchは製品を拡張します
{
    パブリック関数ルール()
    {
        戻る [
            [['id'、 'status']、 'integer']、
            [['name'、 'sku']、「安全」]、
        ];
    }

    パブリック関数検索($ params)
    {
        $ query = product :: find();

        //ここにフィルターに基づいて条件を追加します
        $ dataprovider = new ActiveDataprovider([
            「クエリ」=> $クエリ、
            'pagination' => ['pagesize' => 10]、
        ]);

        //パラメーターをロードして検証します
        if(!($ this-> load($ params)&& $ this-> validate())){
            $ dataproviderを返します。
        }

        //フィルター条件を適用します
        $ query-> andfilter where([
            'id' => $ this-> id、
            'status' => $ this-> status、
        ]);

        $ query-> andfilterwhere(['like'、 'name'、$ this-> name]))
               - > andFilterwhere(['like'、 'sku'、$ this-> sku]);

        $ dataproviderを返します。
    }
}

コントローラーの検索モデルを使用します

コントローラーで、検索モデルをインスタンス化し、リクエストパラメーターをパスします。

例: controllers/ProductController.php

パブリック関数actionindex()
{
    $ searchModel = new Productesearch();
    $ dataprovider = $ searchModel-> search(yii :: $ app-> request-> queryparams);

    return $ this-> render( 'index'、[
        'SearchModel' => $ searchModel、
        'dataprovider' => $ dataprovider、
    ]);
}

GridViewを使用して表示されます

ビューファイルで、 GridViewを使用して結果を表示し、検索フォームにActiveForm

例: views/product/index.php

 <?= html :: beginform([&#39;product/index&#39;]、 &#39;get&#39;)?>
    <?= html :: input( &#39;text&#39;、 &#39;productesearch [name]&#39;、yii :: $ app-> request-> get( &#39;productesearch&#39;)[&#39;name&#39;] ?? &#39;&#39;、[&#39;placeholder&#39; = &#39;search by name&#39;]?>>
    <?= html :: dropdownlist( &#39;productesearch [status]&#39;、yii :: $ app-> request-> get( &#39;productesearch&#39;)[&#39;status&#39;] ?? &#39;&#39; &#39;、[&#39; 1 &#39;=&#39; active &#39;、&#39; 0 &#39;=&#39; Inactive &#39;]、[&#39; prompt &#39;=>&#39; All status &#39;])?>
    <?= html :: submitbutton( &#39;filter&#39;、[&#39;class&#39; => &#39;btn btn-primary&#39;])?>
<?= html :: endform()?>

<?= gridview :: widget([
    &#39;dataprovider&#39; => $ dataprovider、
    &#39;filtermodel&#39; => $ searchModel、
    「列」=> [
        &#39;id&#39;、
        &#39;名前&#39;、
        「Sku」、
        [
            「属性」=> &#39;ステータス&#39;、
            &#39;value&#39; => function($ model){
                $ model-> statusを返しますか? 「アクティブ」:「非アクティブ」;
            }、
            &#39;filter&#39; => [&#39;1&#39; => &#39;Active&#39;、 &#39;0&#39; => &#39;Inactive&#39;]、
        ]、、
    ]、、
])?>

高度なフィルタリングのヒント

  • 日付範囲:検索モデルで2つのフィールド( date_fromdate_to )を使用し、クエリBETWEENで適用します。
  • 関係ベースのフィルター:関連するテーブル(例、カテゴリ名)に結合し、 innerJoinWithを使用してフィルターを加えます。
  • カスタム属性:複雑な条件の検索モデルに仮想属性を追加します。
  • パフォーマンス:フィルタリングされた列で適切なデータベースインデックス作成を確認します。

基本的に、Yii2の組み込みコンポーネントにより、検索とフィルタリングが清潔でスケーラブルになります。パターンに従ってください:モデルデータプロバイダーのグリッドビュー/フォーム処理を検索します。

以上がYiiで検索とフィルタリングを実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ホットトピック

YII開発者:重要な技術的スキルの習得 YII開発者:重要な技術的スキルの習得 Aug 04, 2025 pm 04:54 PM

YIIのマスターになるには、次のスキルを習得する必要があります。1)YIIのMVCアーキテクチャを理解する、2)ActivereCordormの使用に習熟している、3)GIIコード生成ツールを効果的に利用する、4)マスターYIIの検証ルール、5)データベースクエリパフォーマンスを最適化する、6)これらのスキルの学習と実践を通じて、YIIフレームワークの下での開発能力を包括的に改善することができます。

YIIの備品をテストに使用するにはどうすればよいですか? YIIの備品をテストに使用するにはどうすればよいですか? Jul 23, 2025 am 01:30 AM

フィクスチャは、YIIテストでデータをプリロードするために使用されるメカニズムです。 1.アクティブフィックスを継承してモデルを指定するためのフィクスチャクラスを作成します。 2. $の依存を介して依存関係の順序を設定します。 3.データ/ディレクトリ内のデータファイルを定義します。 4. FIXTURES()メソッドを介してテストクラスでの使用を宣言します。 5。YIIは、テスト後にデータを自動的にロードおよびクリーンアップします。たとえば、userfixtureはテスト/fixtures/data/user.phpファイルにユーザーデータをロードします。テスト中に、$ this-> users ['user1']を介してアリスのデータを取得して、アサーション検証を取得できます。 YiiはさまざまなFIを提供しています

Yiiでユーザーパスワードをリセットする方法 Yiiでユーザーパスワードをリセットする方法 Sep 01, 2025 am 12:13 AM

回答:Yii2でパスワードリセットを実装するには、Password_reset_Tokenと有効期限フィールドを追加し、一意のトークンを生成してユーザーのメールボックスに送信し、トークンの有効性を確認してユーザーが新しいパスワードを設定し、最終的に期限切れのトークンをクリーンする必要があります。特定の手順には以下が含まれます。1。データベースを変更してトークンフィールドを追加します。 2。ユーザーモデルにGeneratePassWordResettokenメソッドを実装して、タイムスタンプ付きトークンを生成し、1時間の有効期間を設定します。 3. passwordresetRequestformフォームを作成して、リクエストを処理し、ユーザーを見つけて、リセットリンク付きのメールを送信します。 4.新しいパスワードを確認するために、resetPassWordformモデルの強度を定義します

YiiでカスタムSQLクエリを書くにはどうすればよいですか? YiiでカスタムSQLクエリを書くにはどうすればよいですか? Jul 21, 2025 am 02:01 AM

YiiでカスタムSQLクエリを作成し、Yii :: $ app-> dbを使用して実装できます。手順は次のとおりです。1。createcommand()を使用してクエリコマンドを作成します。 2。bindValue()またはbindparam()を介した結合パラメーターを介して、SQL注入を防ぎます。 3。クエリを実行するためのqueryall()、queryone()、およびその他のメソッドを呼び出します。 4。挿入および更新操作の場合、call incers()およびupdate()メソッドをチェーンできます。 5. SQLを直接書き、パラメーターをバインドすることをお勧めします。 6.結果をモデルに変換する必要がある場合は、プロパティをインスタンス化および設定できます。 7. QueryBuilderを使用して、最初に安全なクエリを作成し、返信し、返信します。

YIIでデバッグモードを有効にするにはどうすればよいですか? YIIでデバッグモードを有効にするにはどうすればよいですか? Jul 30, 2025 am 02:27 AM

toenabledeBuggingModeyinyii、installandConfiguretheyi2-DebugModule.1.Checkifyii2-DebugisinStalledViacoMposeRusingComposeRrequi Revyiisoft/yii2-debug.2.inconfig/web.php、addthedebugmoduletoboottrapandmodulesunderyii_env_dev.3.confirmyii_envisdefined

Yiiのコード生成にGIIを使用する方法 Yiiのコード生成にGIIを使用する方法 Aug 31, 2025 am 06:56 AM

enabableGiiinconfig/web.phpbyaddingthemoduleandsettingttingttingttintttp://your-app-url/index.php?r = gii、usemodelgeneratortortortortortemodelsfromdatabasables、andusecrudgeneratortogenertogentecontrulterrers。

Yiiでファイルアップロードを処理する方法 Yiiでファイルアップロードを処理する方法 Sep 01, 2025 am 01:32 AM

回答:ファイルアップロードをYIIで処理するには、フォームenctypeをMultiPart/Form-Dataに設定し、アップロードされたファイルクラスを使用してファイルを取得し、モデル検証ルールを使用してファイルタイプを確認し、コントローラーにファイルを保存する必要があります。アップロードディレクトリを書き込み、セキュリティのために変更できることを確認してください。

YIIのデータベーストランザクションを処理する方法 YIIのデータベーストランザクションを処理する方法 Sep 02, 2025 am 01:46 AM

yiiensuresdatiantainteritytranughttransactionmanagement、avainwedrollbackonfailure.usebigintransaction()formanualcontrolortransaction()withaClusureforautomaticCommit/rollback.activerecordmodelsautomatelypartipativeationtransactionsionsionsameconnectioni

See all articles