第6回 Beanを関連付ける
河村 嘉之
オープンソースCRM株式会社
2009/3/5
関連の定義(続き)
■関連メタデータを作成する方法
多対多の関連のように関連テーブルを必要とするような関連は、個々のモジュールの定義情報に定義するのではなく、metadataディレクトリ以下にその関連用の定義ファイルを作成して定義します。このファイルの名前は、<関連名>MetaData.phpになります。例えば、取引先と取引先担当者の関連(accounts_contacts)の定義ファイルは、metadata/accounts_contactsMetaData.phpになります。
このファイルに記述される情報は各モジュールのvardefs.phpで記述される情報と似た内容になります。$dictionary変数の配列にこの関連名をキーに定義情報を登録し、そこに以下のような項目を定義します。
|
||||||||||
表2 関連メタデータで定義できる項目 |
また、relationships項目には、以下のような項目が設定できます。
|
||||||||||||||||||||||
表3 関連メタデータのrelationshipsで定義できる項目 |
以下のコードは、取引先と取引先担当者の関連(accounts_contacts)の定義です。この関連の関連テーブルはaccounts_contactsで、このテーブルはテーブルの各行のID、両側のモジュールのID、最終更新日、削除フラグを持っています。また関連の定義として、左側のモジュールが取引先(Accounts)、右側のモジュールが取引先担当者(Contacts)で、それぞれのIDをaccounts_contactsテーブルのaccount_idとcontact_idで保持していることを示しています。
<?php |
これらの関連メタデータは、modules/TableDictionary.phpを通して読み込まれます(このファイルの中で、それぞれのメタデータがincludeされています)。しかし、新しい関連を追加したときにこのファイルを編集して読み込ませると、パッチやアップグレードによって上書きされてしまう可能性があります。
それを避けるためにSugarCRMでは、アップグレードセーフの仕組みとして、追加の関連情報はcustom/application/Ext/TableDictionary/TableDictionary.ext.phpを通して読み込むようになっています。新しく関連を追加する場合はこのファイルに記述します。
関連記事: | |
第4回 ソースコードまで踏み込んでビューをカスタマイズ http://www.atmarkit.co.jp/flinux/rensai/sugarcrm04/sugarcrm04a.html |
関連メタデータで定義された関連をモジュールで利用するには、vardefs.phpのfields項目に、以下のような定義を記述します。この定義は、vardefs.php内部で記述した関連を利用する場合と変わりありません。
以下のコードは、取引先担当者(Contacts)モジュールが取引先(Accounts)モジュールへの関連(accounts_contacts)をaccountsフィールドに保持する際の定義です。
'accounts' => array ( |
2/3 |
|
||||||
|
Linux Square全記事インデックス |
Linux Squareフォーラム 仮想化技術関連記事 |
連載:実践! Xenで実現するサーバ統合 有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します |
|
特集:サーバの仮想化技術とビジネス展開の可能性 jailからUML/VMwareまで 1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった |
|
特集:仮想化技術のアプローチと実装 VMwareから要注目技術Xenまで 1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう |
|
特集:仮想OS「User Mode Linux」活用法 技術解説からカーネルカスタマイズまで Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
特集:仮想化技術の大本命「Xen」を使ってみよう インストール & Debian環境構築編 高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう |
|
特集:仮想化技術の大本命「Xen」を使ってみよう Xen対応カスタムカーネル構築編 Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる |
|
特集:IPv6、UML、セキュリティ機能の統合 全貌を現したLinuxカーネル2.6[第4章] 今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう |
|
Linux Squareプロダクトレビュー VMware Workstation 4 PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう |
|
古くて新しい「サーバ仮想化技術」の行方 サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する |
|
Linux Squareフォーラム全記事インデックス |
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|