目次
Zend Framework チュートリアル: Zend_Db_Table テーブル関連付けの例の詳細な説明、zendzend_db_table
您可能感兴趣的文章:
ホームページ バックエンド開発 PHPチュートリアル Zend Framework チュートリアル Zend_Db_Table テーブル関連付け例の詳細な説明、zendzend_db_table_PHP チュートリアル

Zend Framework チュートリアル Zend_Db_Table テーブル関連付け例の詳細な説明、zendzend_db_table_PHP チュートリアル

Jul 12, 2016 am 08:56 AM
db framework table zend テーブルの関連付け

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()

- $row->findBy()


注: このメカニズムは Ruby on Rails で初めて見られました。ここでの は、有効になる前に、関連するクラス名および関連付け名 (ルール キー) とまったく同じである必要があります。以下に例を示します:

リーリー リーリー

親テーブルからフィールドを取得します:

1 対多の関係で 1 から多に取得する方法を紹介しました。今度は、多から 1 を取得します。実際には、多の中の 1 つから対応するレコードを取得します。

同様に、次のステートメントもあります:

リーリー

同様に、$table はクラス名で、オプションのパラメーター $rule には対応するルール キーが入力されます。以下に例を示します:

リーリー

上記との違いは、上記で返されるのは複数のレコードのコレクションであり、今回返されるのは 1 つのレコードである必要があることです。次の例は、ルールを設定する例です:

リーリー

ルールを記入するだけです。同様に、このメソッドにも「魔法のフィールド」があります。 findParentRow('', '') は以下に対応します:

- $row->findParent()
- $row->findParentBy()

例子:

取得多对多关系表的字段:

上面两个方法讲述了一对多的使用,下面就是多对多了。我们使用如下方法取得多对多关系表的数据:

$row->findManyToManyRowset($table, $intersectionTable, [$rule1, [$rule2]]);

ログイン後にコピー

这里参数变成了4个,因为需要增加一个关系表来存储多对多的关系。

$table是与之发生多对多关系的表的类名,$intersectionTable是中间存储关系的关系表的类名。$rule1和$rule2是上面两个数据表的Rule Key。省略Rule Key的例子如下:

<&#63;php
$bugsTable    = new Bugs();
$bugsRowset    = $bugsTable->find(1234);
$bug1234     = $bugsRowset->current();
$productsRowset  = $bug1234->findManyToManyRowset('Products', 'BugsProducts');

ログイン後にコピー

下面是该方法的全部参数调用例子:

<&#63;php
$bugsTable    = new Bugs();
$bugsRowset    = $bugsTable->find(1234);
$bug1234     = $bugsRowset->current();
$productsRowset  = $bug1234->findManyToManyRowset('Products', 'BugsProducts', 'Bug');

ログイン後にコピー

这次的“魔术方法”是,对应 findManyToManyRowset('', '', '', '')
- $row->findVia()
- $row->findViaBy()
- $row->findViaByAnd()

例子:

<&#63;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源码下载)

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1113708.htmlTechArticleZend Framework教程之Zend_Db_Table表关联实例详解,zendzend_db_table 本文实例讲述了Zend Framework中Zend_Db_Table表关联用法。分享给大家供大家参考,具...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Microsoft NET Framework のインストールの問題エラー コード 0x800c0006 の修正 Microsoft NET Framework のインストールの問題エラー コード 0x800c0006 の修正 May 05, 2023 pm 04:01 PM

開発者とエンド ユーザーが Windows 上で最新バージョンのアプリケーションを実行するには、.NET Framework 4 が必要です。しかし、.NET Framework 4 のダウンロードとインストール中に、多くのユーザーから、インストーラーが途中で停止し、「ダウンロードがエラー コード 0x800c0006 で失敗したため、.NET Framework 4 はインストールされていません」というエラー メッセージが表示されるという苦情が寄せられました。デバイスに .NETFramework4 をインストールしているときにもこの問題が発生する場合は、正しい場所にいます。

Oracle と DB2 データベース テクノロジーの比較分析 Oracle と DB2 データベース テクノロジーの比較分析 Mar 11, 2024 am 09:54 AM

Oracle と DB2 は、エンタープライズ アプリケーションで広く使用されている 2 つのよく知られたリレーショナル データベース管理システム (RDBMS) です。この記事では、Oracle と DB2 の 2 つのデータベース テクノロジーを比較し、その特徴、パフォーマンス、機能、使用例の分析を含めて詳しく分析します。 1. Oracle データベース技術の概要 Oracle は、米国 Oracle Corporation が開発したリレーショナル データベース管理システムです。エンタープライズレベルのアプリケーションで広く使用されており、強力なパフォーマンスと安定性を備えています。

Oracle と DB2 の SQL 構文の比較と相違点 Oracle と DB2 の SQL 構文の比較と相違点 Mar 11, 2024 pm 12:09 PM

Oracle と DB2 は一般的に使用される 2 つのリレーショナル データベース管理システムであり、それぞれに独自の SQL 構文と特性があります。この記事では、Oracle と DB2 の SQL 構文を比較し、相違点を示し、具体的なコード例を示します。データベース接続 Oracle では、次のステートメントを使用してデータベースに接続します: CONNECTusername/password@database DB2 では、データベースに接続するステートメントは次のとおりです: CONNECTTOdataba

Windows 11/10 で SetupDiag を使用して Windows アップグレードの問題を特定する方法 Windows 11/10 で SetupDiag を使用して Windows アップグレードの問題を特定する方法 Apr 17, 2023 am 10:07 AM

Windows 11 または Windows 10 PC でアップグレードまたはアップデートの問題が発生すると、通常、失敗の背後にある実際の理由を示すエラー コードが表示されます。ただし、エラー コードが表示されずにアップグレードまたはアップデートが失敗すると、混乱が生じることがあります。便利なエラー コードを使用すると、問題の場所が正確にわかるので、修正を試みることができます。ただし、エラー コードが表示されないため、問題を特定して解決することが困難になります。エラーの背後にある理由を見つけるだけでも多くの時間がかかります。この場合、Microsoft が提供する SetupDiag という専用ツールを使用すると、エラーの背後にある本当の理由を簡単に特定できます。

SCNotification が動作を停止しました [問題を解決する 5 つのステップ] SCNotification が動作を停止しました [問題を解決する 5 つのステップ] May 17, 2023 pm 09:35 PM

Windows ユーザーは、コンピュータを起動するたびに「SCNotification は動作を停止しました」というエラーに遭遇する可能性があります。 SCNotification.exe は Microsoft システム通知ファイルであり、アクセス許可エラーやネットワーク障害が原因で PC を起動するたびにクラッシュします。このエラーは、問題のあるイベント名でも知られています。したがって、これは SCNotification が動作を停止したということではなく、バグ clr20r3 として認識される可能性があります。この記事では、SCNotification が動作を停止した問題を修正して再び悩まされないようにするために必要なすべての手順を説明します。 SCNotification.eとは何ですか

Oracle と DB2 データベースのパフォーマンスの比較分析 Oracle と DB2 データベースのパフォーマンスの比較分析 Mar 09, 2024 pm 10:00 PM

Oracle データベースと DB2 データベースは、エンタープライズ レベルのアプリケーションで広く使用されている 2 つの主要なリレーショナル データベース管理システムです。実際のアプリケーションでは、データベースのパフォーマンスがデータベース システムの品質を評価するための重要な指標の 1 つになることがよくあります。この記事では、Oracle データベースと DB2 データベースのパフォーマンスを比較分析し、特定のコード例を使用してそれらの違いを示します。 1. Oracle データベースのパフォーマンス分析 Oracle データベースは、拡張性と安定性に優れた強力なデータベース管理システムです。

db とはどのようなファイル形式ですか? db とはどのようなファイル形式ですか? May 19, 2021 am 11:56 AM

dbとは「datebase」の略で、「データベースファイル」の形式の一つで、ソフトウェアがデータベースに相当するデータを保存するためのファイルで、ソフトウェアごとに保存形式が異なります。たとえば、Win7 システムの「Thumbs.db」はサムネイル データ ファイルであるため、db ファイルは特定のファイル形式ではありません。

Microsoft .NET Framework 4.5.2、4.6、および 4.6.1 は 2022 年 4 月にサポートを終了します Microsoft .NET Framework 4.5.2、4.6、および 4.6.1 は 2022 年 4 月にサポートを終了します Apr 17, 2023 pm 02:25 PM

Microsoft.NET バージョン 4.5.2、4.6、または 4.6.1 をインストールしている Microsoft Windows ユーザーが、将来の製品更新を通じて Microsoft にフレームワークをサポートさせることを希望する場合は、新しいバージョンの Microsoft Framework をインストールする必要があります。 Microsoft によると、3 つのフレームワークはすべて 2022 年 4 月 26 日にサポートを終了します。サポート期限が終了すると、製品は「セキュリティ修正またはテクニカル サポート」を受けられなくなります。ほとんどのホーム デバイスは、Windows アップデートを通じて最新の状態に保たれます。これらのデバイスには、.NET Framework 4.8 などの新しいバージョンのフレームワークがすでにインストールされています。自動的に更新されないデバイスは、

See all articles