yiiのActiverecordは、データベーステーブルをPHPクラスとして表現することによりデータベースの相互作用を簡素化するオブジェクト関連マッピング(ORM)実装です。各テーブルはモデルクラスに対応し、テーブル内の各行はそのクラスのインスタンスとして表されます。これにより、RAW SQLクエリを作成する代わりに、おなじみのオブジェクト指向プログラミング手法を使用してデータベースと対話できます。 yii \ db \ activerecord
を拡張するPHPクラスを作成します。これらのクラスは、データベース列にマッピングされるプロパティを定義し、データとの対話方法を提供します。 delete()
など。これらの方法は、基礎となるSQLクエリを抽象化しています。ポイント:
yii \ cache \ cache
を使用する)をメモリに保存し、データベースの負荷を低減します。 batchupdate()
、および batchdelete()
大規模なデータ操作の場合、個々のレコード操作のパフォーマンスを大幅に改善します。実際に必要な場合のみロード関連データ。 Yiiはインデックス作成を直接処理しません。これはデータベースレベルの最適化です。 yii \ db \ query
)を使用することを検討してください。データベースクエリ? YiiのActiverCord内のデータベースクエリの最適化には、いくつかの重要な戦略が含まれます。絶対に必要でない限り、テーブル全体の取得を避けます。
find()
メソッド:適切な find()
method(eg、 find()
、 findone()
、 where <code> arwhere()
など)データの取得を正確にターゲットにします。すべての列を選択する( select *
)は、特に大きなテーブルでは大幅に遅くなります。 count()
を使用して: code> count() method wisely;不必要なカウントを避けてください。存在のみを確認する必要がある場合は、 exists()
クエリを分析して crose> clausesとそれに応じてインデックスを作成するで頻繁に使用される列を識別します。
yii \ db \ transaction
)。更新。 hasone()
を使用して定義されます。関連モデルで hasmany()
を使用して定義。これにはジャンクションテーブルが必要であり、 hasmany()
を使用して定義されます。投稿には多くのコメントがあります。 <code class="php"> // postモデルpublic function getComments(){return $ this-&gt; hasmany(comment :: classname()、['post_id' =&gt; 'id']); } //コメントモデルpublic function getpost(){return $ this-&gt; hasone(post :: classname()、['id' =&gt; 'post_id']); } </code>
このような投稿に関連するコメントにアクセスできるようになりました。 foreach($ post-&gt;コメント$ comment){//コメントプロパティにアクセス}
データベーステーブルで外部キーを正しく定義することを忘れないでください。関連モデルにアクセスする際にデータベースクエリを減らすために、
を使用することを強くお勧めします。 ActivereCord: を使用して、関連データを単一のクエリにロードします。
を使用して、常に潜在的なデータベースの例外を処理します...キャッチ
ブロックを使用してください。デバッグに適切にログエラー。プロファイリングツールを使用して、スロークエリを識別および最適化します。以上がYiiのActiverCordはどのように機能し、どのように効率的に使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。