1

私はこのドキュメントに従っています:http://www.propelorm.org/documentation/04-relationships.html#manytomany_relationships

私は非常によく似た設定をしています(読みやすくするために少し簡略化されていますが):

航海日誌

  <table name="logbook" phpName="Logbook" idMethod="native">
    <column name="id" phpName="Id" type="INTEGER" size="10" sqlType="int(10) unsigned" primaryKey="true" autoIncrement="true" required="true"/>
    <column name="location" phpName="Location" type="VARCHAR" size="255" required="false"/>
  </table>

コンタクト

  <table name="contact" phpName="Contact" idMethod="native">
    <column name="id" phpName="Id" type="INTEGER" size="10" sqlType="int(10) unsigned" primaryKey="true" autoIncrement="true" required="true"/>
    <column name="title" phpName="Title" type="VARCHAR" size="255" required="true"/>
    <column name="name" phpName="Name" type="VARCHAR" size="255" required="true"/>
    <column name="telephone" phpName="Telephone" type="VARCHAR" size="20" required="true"/>
  </table>

ログブックの連絡先

  <table name="logbook_contact" phpName="LogbookContact" idMethod="native" isCrossRef="true">
    <column name="logbook_id" phpName="LogbookId" type="INTEGER" size="10" sqlType="int(10) unsigned" primaryKey="true" required="true"/>
    <column name="contact_id" phpName="ContactId" type="INTEGER" size="10" sqlType="int(10) unsigned" primaryKey="true" required="true"/>
    <foreign-key foreignTable="contact" name="fk_logbook_contact_contact" onDelete="CASCADE" onUpdate="CASCADE">
      <reference local="contact_id" foreign="id"/>
    </foreign-key>
    <foreign-key foreignTable="logbook" name="fk_logbook_contact_logbook" onDelete="CASCADE" onUpdate="CASCADE">
      <reference local="logbook_id" foreign="id"/>
    </foreign-key>
    <index name="fk_logbook_contact_contact">
      <index-column name="contact_id"/>
    </index>
  </table>

logbook_contactテーブルにあることに注意しisCrossRef="true"てください。これは、これがジャンクションテーブルであることを示しています。ここから、(ビルドディレクトリをクリアした後)再実行propel-gen ompropel-gen convert-confましたが、それでも次のようなことはできないようです。

<?php
/* presume $logbook has been LogbookQuery::create()'d already... */
$contacts = $logbook->getContacts();
$nbContacts = $logbook->countContacts();

Zend Studioを使用していますが、コードヒントウィンドウに表示されません。

$ logbook-> getContacts();はありません。

誰かが私がここで間違ったことをしたかもしれないことを私に提案できますか?私はあなたが私にドキュメントを指摘してくれてうれしいです-私はこれらを可能な限り厳密に追跡し、うまくいくまですべてを続けてきました$test

4

1 に答える 1

2

getContacts()おそらく、Logbookではなくインスタンスを呼び出したいと思うでしょうPropelCollectionLogbookコードを参照してください。インスタンスの代わりにのコレクションをフェッチしているようです。

$this->logbook = $this->company->getLogbooks();

ここでは、オートコンプリート出力に関するものの$this->logbookようです。PropelCollectionそれはLogbookオブジェクトではありません。あなたが試すことができます:

$test = $this->logbook[0]->getContacts(); 
于 2012-08-21T16:07:00.250 に答える