Doctrine 2加入表bug?

时间:2011-03-21 03:27:01

标签: php mysql doctrine-orm

我有两个实体,$ staff和$ pub,以及一个连接表$ staffPub。我可以保存并使用$ staff和$ pub,当我手动填充$ staffPub数据库表时,关系全部起作用。问题是,如果我尝试持久化$ staffPub关系,我会收到以下通知,并且该行未提交:

注意:未定义的索引: .... / Doctrine / ORM / Persisters / BasicEntityPersister.php 中的rmcode 491

通知 .... / Doctrine / ORM / Persisters / BasicEntityPersister.php 491 上的未定义索引:pubofficeid 42

在我添加@JoinColumn注释之前,$ staffPub实体一直没有问题。

class StaffPub {
/**
 * @ManyToOne (targetEntity="Hs_Profile_Publication", inversedBy="staffPubRelation", cascade={"persist"})
 * @JoinColumn(name="rmcode", referencedColumnName="rmcode")
 */
private $publication;

/**
 * @ManyToOne (targetEntity="Hs_Profile_Staff", inversedBy="staffPubRelation", cascade={"persist"})
 * @JoinColumn(name="pubofficeid", referencedColumnName="pubofficeid")
 */
public $staff;

.... etc ...

员工和酒吧都有ID'id'。当我将上面的referencedColumnName设置为'id'时,它不会抛出通知。所以,问题是,如何将Staff和Pub中的'pubofficeid'和'rmcode'分别定义为ids?如果我只是添加@Id,在尝试保留对象时会出现以下错误:

SQLSTATE [HY093]:参数号无效:绑定变量数与令牌数不匹配

在Doctrine / DBAL / Statement.php第131行中抛出。

因此,归结为以下问题:如何使用多个@Ids持久保存对象?

1 个答案:

答案 0 :(得分:0)

StaffPub的ID是多少?你确定这不是OneToOne吗?反转的命名表明了它。