0

Propel でリレーションシップに外部フィールドを作成することは可能ですか? 主な目的は、関係のタイプを持つことです。

たとえば、連絡先と商談があります。この関係のタイプを持つ取引先責任者と商談の間の関係が必要です。

データの例:

contact_id   | opportunity_id   | association_type
------------------------------------------------------
<contact_id> | <opportunity_id> | <Executive Sponsor>
<contact_id> | <opportunity_id> | <Business Evaluator>

Propelで実装することは可能ですか?

ありがとう

4

1 に答える 1

3

絶対に可能です。cross_refテーブルに列を追加するだけです:

<table name="contact_opportunity" isCrossRef="true">
  <column name="contact_id" type="INTEGER" primaryKey="true"/>
  <column name="opportunity_id" type="INTEGER" primaryKey="true"/>

  <!-- your new field -->
  <column name="association_type" type="VARCHAR" required="true" />

  <foreign-key foreignTable="contact">
    <reference local="contact_id" foreign="id"/>
  </foreign-key>
  <foreign-key foreignTable="opportunity">
    <reference local="opportunity_id" foreign="id"/>
  </foreign-key>
</table>

次に、他のようにクエリを実行できます。

$association = ContactOpportunityQuery::create()
  ->filterByContact($contact)
  ->filterByOpportunity($opportunity)
  ->findOne();
$association->getAssociationType();
于 2013-07-05T20:28:09.700 に答える