


Zend Framework チュートリアル Zend_Db_Table テーブル関連付け例の詳細な説明、zendzend_db_table_PHP チュートリアル
Zend Framework チュートリアル: Zend_Db_Table テーブル関連付けの例の詳細な説明、zendzend_db_table
この記事では、Zend Framework での Zend_Db_Table テーブル関連付けの使用方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
紹介:
RDBMSでは、テーブル間には1対多対応、多対多対応など様々な関係があります。
Zend フレームワークは、これらの関係の実装を容易にするいくつかのメソッドを提供します。
関係の定義:
この記事で使用される例の関係定義は次のとおりです:リーリー
この例では、Accounts、Products、Bugs、BugsProducts という 4 つのクラスが定義されています。このうち、Accounts、Products、および Bugs は 3 つのエンティティ テーブルであり、BugsProducts はリレーションシップ テーブルです。これら 3 つのエンティティをもう一度分析してみましょう。アカウントには複数のバグがあり、それらの間には 1 対多の関係がありますが、バグと製品には多対多の関係があります。
$_dependentTables は、オブジェクトに関連付けられたオブジェクト名です。ここでは、関連付けられたデータベース名の代わりにオブジェクト名を記述する必要があります。
$_referenceMap 配列は、他のテーブルとの関係を定義するために使用され、それらのテーブルとの関係と、どのような関係があるかを設定できます。最初に設定するのはルールキーで、上記の例では「Reporter」や「Engineer」などです。ルール キーの機能は実際にはリレーションシップの名前であり、他のデータベース テーブル名や他のオブジェクト名と同じである必要はありません。マーキングのためだけに、このルール キーの役割は後で確認できます。
各ルールの下にはいくつかの定義があります: (特別な指示はありません。すべては上記の「レポーター」関係で説明されています)
columns=> 他のテーブルに関連付けられたフィールド名を設定します。上記の「report_by」は、データベース内のテーブル Bugs の report_by フィールドです。ここではフィールドは 1 つだけですが、複数のフィールドを設定することもできます。
refTableClass=> このテーブルに関連するテーブルを設定するために使用されます。ここで、テーブル名の代わりにターゲット テーブルのオブジェクトの名前を使用する必要があることに注意してください。この例では、「Account」オブジェクトに関連付けられています。
refColumns =>コンタクトが発生するテーブルのフィールドを設定します。複数のフィールドに関連する場合は、複数の列に対応させる必要があります。この設定は実際にはオプションです。空の場合、関連フィールドは関連テーブルの主キーとして自動的に設定されます。上記の例では、主キーは関連フィールドとして使用されないため、手動で設定されます。
onDelete=> オプションのフィールドで、削除時のアクションを設定します。
onUpdate=> オプションのフィールドで、テーブルを更新するときのアクションを設定します。
関連テーブルからデータを取得します:
すでにクエリ結果を取得している場合は、次のステートメントを使用して、この結果に関連付けられたテーブルのクエリ結果を取得できます。 リーリーこの方法では通常、1対多に対応する2つのエンティティテーブルと、多対多に対応する1つのリレーションシップテーブルを使用します。一方のエンティティテーブルともう一方のエンティティテーブルからデータを取得する方法を以下に説明します。
最初のフィールド $table は、このテーブルに関連付けられるテーブルに対応するクラス名を参照します。 2 番目のフィールドはオプションであり、先ほど述べたルール キーであり、省略した場合は、テーブル内の最初のリレーションシップがデフォルトになります。以下に例を示します:
リーリーこの例では、最初に 1234 という番号のユーザーを読み取り、次にこの人物が報告したバグを見つけました。デフォルトでは zend が最初の関連付けであるため、ここでのアカウントに関連付けられている最初の関連付けは「Reporter」であるため、Reporter レコードが削除されました。
エンジニアなどの他のレコードを取り出したい場合は、次の方法に従うことができます:
リーリー findDependentRowset の使用に加えて、「Magic Method」と呼ばれる仕組みを使用することもできます。なぜそう呼ばれるかというと、手品のようなものだからです。したがって、メソッド findDependentRowset('
- $row->find
注: このメカニズムは Ruby on Rails で初めて見られました。ここでの
1 対多の関係で 1 から多に取得する方法を紹介しました。今度は、多から 1 を取得します。実際には、多の中の 1 つから対応するレコードを取得します。
同様に、次のステートメントもあります:
リーリー同様に、$table はクラス名で、オプションのパラメーター $rule には対応するルール キーが入力されます。以下に例を示します:
リーリー上記との違いは、上記で返されるのは複数のレコードのコレクションであり、今回返されるのは 1 つのレコードである必要があることです。次の例は、ルールを設定する例です:
リーリールールを記入するだけです。同様に、このメソッドにも「魔法のフィールド」があります。 findParentRow('
- $row->findParent
- $row->findParent
例子:
取得多对多关系表的字段:
上面两个方法讲述了一对多的使用,下面就是多对多了。我们使用如下方法取得多对多关系表的数据:
$row->findManyToManyRowset($table, $intersectionTable, [$rule1, [$rule2]]);
这里参数变成了4个,因为需要增加一个关系表来存储多对多的关系。
$table是与之发生多对多关系的表的类名,$intersectionTable是中间存储关系的关系表的类名。$rule1和$rule2是上面两个数据表的Rule Key。省略Rule Key的例子如下:
<?php $bugsTable = new Bugs(); $bugsRowset = $bugsTable->find(1234); $bug1234 = $bugsRowset->current(); $productsRowset = $bug1234->findManyToManyRowset('Products', 'BugsProducts');
下面是该方法的全部参数调用例子:
<?php $bugsTable = new Bugs(); $bugsRowset = $bugsTable->find(1234); $bug1234 = $bugsRowset->current(); $productsRowset = $bug1234->findManyToManyRowset('Products', 'BugsProducts', 'Bug');
这次的“魔术方法”是,对应 findManyToManyRowset('
- $row->find
- $row->find
- $row->find
例子:
<?php $bugsTable = new Bugs(); $bugsRowset = $bugsTable->find(1234); $bug1234 = $bugsRowset->current(); // Use the default reference rule $products = $bug1234->findProductsViaBugsProducts();// Specify the reference rule $products = $bug1234->findProductsViaBugsProductsByBug();
更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。
您可能感兴趣的文章:
- Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
- Zend Framework教程之Zend_Db_Table_Row用法实例分析
- Zend Framework教程之Zend_Db_Table用法详解
- Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
- Zend Framework开发入门经典教程
- Zend Framework框架Smarty扩展实现方法
- Zend Framework框架路由机制代码分析
- Zend Framework实现具有基本功能的留言本(附demo源码下载)
- Zend Framework实现将session存储在memcache中的方法
- Zend Framework分页类用法详解
- Zend Framework实现多文件上传功能实例
- Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
- Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
