


yii2 ActiveRecord マルチテーブル関連付けとマルチテーブル関連付け検索の実装、yii2activerecord_PHP チュートリアル
yii2 ActiveRecordのマルチテーブル関連付けとマルチテーブル関連付け検索の実装、yii2activerecord
よくある質問。最近、グループ内でのフィードバックを通して、この問題をまだ理解していない人が多いと感じました。今日はこの問題について明確に説明しましたが、yii2 ActiveRecord がどのように複数テーブルの関連付けを行うのか、またこの関連付けを最適化する方法を見てみましょう。
シーンの要件:
ユーザー テーブル user とユーザー チャネル テーブル auth があり、2 つのデータ テーブルが user.id と auth.uid によって 1 対 1 に関連付けられているとします。ここで、認証テーブルのソース チャネル ソースをユーザー リストに表示する必要があり、チャネルが検索可能である必要があります。
まず、gii を通じて user および auth シリーズ関連のモデルと操作を生成します。ここでは詳細な説明はありません。gii の操作については、xxx
を参照してください。引き続き重要な手順を見ていきましょう:
1. user テーブルに対応する AR モデル クラス commonmodelsUser.php を見つけ、このクラス ファイルに認証テーブルを関連付けます
リーリー設定後、2 つのデータテーブルが自動的に関連付けられるわけではありません。ユーザー リスト ページにアクセスします (リスト ページは GII によって生成され、これまで操作していません)。データベース クエリのデバッグを通じて、実際のクエリが認証テーブルに関連付けられていないことを確認するのは難しくありません
2. グリッドビューに関連テーブルのソースチャネルフィールドソースを追加します
リーリー上で、関連付けがないと言いましたが、auth.source を直接使用するにはどうすればよいですか?
心配しないでください。デバッグを開いて実際のクエリを確認します。
select * from `auth` where uid = xxx; のような多くの操作があることがわかります。ページングのデフォルトが 20 個のデータである場合、同様のクエリが 20 個存在します。
まず何が起こったのか見てみましょう?
実はこれがphpの基礎知識です。オブジェクトの存在しないメンバー変数を読み書きする場合、__get() __set() マジック関数が自動的に呼び出されます。 Yii もこれを利用して実装しています。
この操作は、ほとんどの人がグリッドビューで関連テーブル データをカプセル化する方法とほぼ同じですが、! 20 個の SQL クエリでは、明らかにオーバーヘッドが大幅に増加します。これが左結合操作であれば素晴らしいでしょう。
3. SQL を最適化する
最適化する必要があるのは次のとおりです:
20 SQL が 1 SQL になります
関連テーブルに必要なフィールドのみを取得します
何人かの学生が叫んでいます。これが Yii に付属している操作です。それを最適化するにはどうすればよいですか?データ ソースの取得に戻り、ユーザー リストのデータが userSearch モデルの検索メソッドを通じて提供されていることがわかります。
つまり、データ クエリは実際には関連テーブル クエリを実行しません。この場合、UserSearch に関連クエリを追加します
リーリーユーザー リスト ページを再度更新してみましょう。デバッグ分析を通じて、2 つの SQL ステートメントが注目を集めていることがわかります
リーリーつまり、SQL の最適化という目標はデバッグ分析を通じて達成され、DB のクエリ時間が大幅に短縮されたことがわかりました。
4. 関連テーブルフィールドにクエリを追加します
gridview の検索モデルも、searchModel を通じて実装され、ルールによってどのフィールドが検索可能か、どのフィールドが検索不可能かを制御します。
次に、関連付けテーブルのソースを検索可能にする必要があるため、searchModel で属性ソースを定義し、それをルールに追加します
リーリー次に、gridview で auth.source を変更しましょう
リーリーこの時点で、インターフェースは問題ありません。プログラムによる検索を実装するためのステップがまだ 1 つ残っています。データ ソースを取得する場所に新しいソース条件を追加するだけです。 れーれー

ホット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)

ホットトピック









Xianyu はどのようにしてユーザーを検索しますか?ソフトウェア Xianyu では、ソフトウェア内で通信したいユーザーを直接見つけることができます。しかし、ユーザーを検索する方法がわかりません。検索後にユーザー間で表示するだけです。次は編集部からユーザーへの検索方法についてご紹介しますので、興味のある方はぜひご覧ください! Xianyu でユーザーを検索するには? 回答: 検索されたユーザーの詳細を表示します はじめに: 1. ソフトウェアを入力し、検索ボックスをクリックします。 2. ユーザー名を入力し、「検索」をクリックします。 3. 検索ボックスの下の[ユーザー]を選択して、該当するユーザーを検索します。

Huawei 携帯電話にデュアル WeChat ログインを実装するにはどうすればよいですか?ソーシャルメディアの台頭により、WeChatは人々の日常生活に欠かせないコミュニケーションツールの1つになりました。ただし、多くの人は、同じ携帯電話で同時に複数の WeChat アカウントにログインするという問題に遭遇する可能性があります。 Huawei 社の携帯電話ユーザーにとって、WeChat の二重ログインを実現することは難しくありませんが、この記事では Huawei 社の携帯電話で WeChat の二重ログインを実現する方法を紹介します。まず第一に、ファーウェイの携帯電話に付属するEMUIシステムは、デュアルアプリケーションを開くという非常に便利な機能を提供します。アプリケーションのデュアルオープン機能により、ユーザーは同時に

インテリジェンスが支配する時代では、オフィス ソフトウェアも普及し、Wps フォームはその柔軟性により大多数のオフィス ワーカーに採用されています。仕事では、単純な帳票作成や文字入力だけでなく、実際の業務を遂行するためにより高度な操作スキルを習得することが求められており、データ付きの帳票や帳票を利用することで、より便利で明確、正確なものとなります。今日の教訓は、「WPS テーブルでは、検索しているデータが見つかりません。検索オプションの場所を確認してください。なぜですか?」です。 1. まず Excel テーブルを選択し、ダブルクリックして開きます。次に、このインターフェイスですべてのセルを選択します。 2. 次に、このインターフェースで、上部ツールバーの「ファイル」の「編集」オプションをクリックします。 3. 次に、このインターフェースで「」をクリックします。

プログラミング言語 PHP は、さまざまなプログラミング ロジックやアルゴリズムをサポートできる、Web 開発用の強力なツールです。その中でも、フィボナッチ数列の実装は、一般的で古典的なプログラミングの問題です。この記事では、PHP プログラミング言語を使用してフィボナッチ数列を実装する方法を、具体的なコード例を添付して紹介します。フィボナッチ数列は、次のように定義される数学的数列です。数列の最初と 2 番目の要素は 1 で、3 番目の要素以降、各要素の値は前の 2 つの要素の合計に等しくなります。シーケンスの最初のいくつかの要素

Huawei 携帯電話に WeChat クローン機能を実装する方法 ソーシャル ソフトウェアの人気と人々のプライバシーとセキュリティの重視に伴い、WeChat クローン機能は徐々に人々の注目を集めるようになりました。 WeChat クローン機能を使用すると、ユーザーは同じ携帯電話で複数の WeChat アカウントに同時にログインできるため、管理と使用が容易になります。 Huawei携帯電話にWeChatクローン機能を実装するのは難しくなく、次の手順に従うだけです。ステップ 1: 携帯電話システムのバージョンと WeChat のバージョンが要件を満たしていることを確認する まず、Huawei 携帯電話システムのバージョンと WeChat アプリが最新バージョンに更新されていることを確認します。

タオバオのモバイルアプリには良い商品がたくさんあります。いつでもどこでも購入でき、すべて正規品です。各商品の価格は明確です。複雑な操作は一切なく、より便利にお買い物をお楽しみいただけます。自由に検索して購入できます さまざまなカテゴリの商品セクションがすべてオープンしています 個人の配送先住所と連絡先番号を追加すると、運送会社から連絡があり、最新の物流動向をリアルタイムで確認できます初めて利用する方、商品の検索方法が分からない方でも、もちろん検索バーにキーワードを入力するだけですべての商品が表示されますので、お買い物はもうやめられません。モバイルタオバオユーザーが店舗名を検索するための詳細なオンライン方法を提供します。 1.まず携帯電話でタオバオアプリを開きます。

今日のソフトウェア開発分野では、効率的で簡潔かつ同時実行性の高いプログラミング言語として、Golang (Go 言語) が開発者にますます好まれています。豊富な標準ライブラリと効率的な同時実行機能により、ゲーム開発の分野で注目を集めています。この記事では、ゲーム開発に Golang を使用する方法を検討し、具体的なコード例を通じてその強力な可能性を示します。 1. ゲーム開発における Golang の利点 Golang は静的型付け言語として、大規模なゲーム システムの構築に使用されます。

PHP ゲーム要件実装ガイド インターネットの普及と発展に伴い、Web ゲーム市場の人気はますます高まっています。多くの開発者は、PHP 言語を使用して独自の Web ゲームを開発することを望んでおり、ゲーム要件の実装は重要なステップです。この記事では、PHP 言語を使用して一般的なゲーム要件を実装する方法を紹介し、具体的なコード例を示します。 1. ゲームキャラクターの作成 Web ゲームにおいて、ゲームキャラクターは非常に重要な要素です。ゲームキャラクターの名前、レベル、経験値などの属性を定義し、これらを操作するメソッドを提供する必要があります。
