goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

SugarCRMにおける、モジュール間の関連(&カーディナリティ)について

2008-01-18 11:31:03 | SugarCRM

メモメモ(確かめていない)

SugarCRMにおいて、モジュール同士の関係っていうのは、テーブル同様、1対多と多対多がある。
どちらのケースでも、まず、vardef.phpに項目は書かれる。
こんなかんじ
  'modified_user_link' =>
  array (
        'name' => 'modified_user_link',
    'type' => 'link',
    'relationship' => 'cases_modified_user',
    'vname' => 'LBL_MODIFIED_BY_USER',
    'link_type' => 'one',
    'module'=>'Users',
    'bean_name'=>'User',
    'source'=>'non-db',
  ),

(上記 >は、本当は半角)

しかし、このあと、1対多と多対多で違う。




■1対多の場合

そのvardefの中(下のほう)に'relationships'の指定があり、そので、上記の'relationship'で指定された関係が記述されている。上記の場合は、'cases_modified_user'ということになるが、それは、vardefの下のほうの'relationships'の中に以下のように指定されている。

   ,'cases_modified_user' =>
   array('lhs_module'=> 'Users', 'lhs_table'=> 'users', 'lhs_key' => 'id',
   'rhs_module'=> 'Cases', 'rhs_table'=> 'cases', 'rhs_key' => 'modified_user_id',
   'relationship_type'=>'one-to-many')

(上記 >は、本当は半角)

ちなみに、vardefは、項目の内容、indicesで示されるインデックス、'relationships'で示される1対多の関係が記述されている。




■多対多の場合

 一方、多対多の場合は、metadataに作られる。たとえば、cases_bugsにおいて、vardef.phpでは、

  'bugs' =>
  array (
  	'name' => 'bugs',
    'type' => 'link',
    'relationship' => 'cases_bugs',
    'source'=>'non-db',
		'vname'=>'LBL_BUGS',
  ),

(上記 >は、本当は半角)
と記述されている。このcases_bugsは、下にあるのではなく、Sugarのホームのしたのmetadata(=modulesと同じレベル)のところに、cases_bugsMetaData.phpというファイルを作成し、そこにテーブル名とテーブル内容、インデックス、'relationships'を記述する。

 これを作成した場合、関係のテーブルを作り直すため、管理者機能でリペアを行うか、インストーラーから行う場合、実践!オープンソースCRMアプリケーション入門の131ページ下側のmanifestファイルの例にあるようなrelationshipsを記述して、インストールする。

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Javaでファイルのアンチウイ... | トップ | オブジェクト指向で開発の最... »
最新の画像もっと見る

SugarCRM」カテゴリの最新記事