【发布时间】:2011-03-21 03:27:01
【问题描述】:
我有两个实体,$staff 和 $pub,还有一个连接表 $staffPub。我可以保存和使用 $staff 和 $pub,当我手动填充 $staffPub 数据库表时,这些关系都有效。问题是,如果我尝试保持 $staffPub 关系,我会收到以下通知并且该行未提交:
通知:未定义索引:..../Doctrine/ORM/Persisters/BasicEntityPersister.php 中的 rmcode 在第 491 行
通知:未定义索引:..../Doctrine/ORM/Persisters/BasicEntityPersister.php 中的 pubofficeid 在第 491 行
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 ...
Staff 和 Pub 都有 id 'id'。当我将上面的 referencedColumnName 设置为“id”时,它不会抛出通知。所以,问题是,如何分别在 Staff 和 Pub 中将 'pubofficeid' 和 'rmcode' 定义为 id?如果我只是添加@Id,我会在尝试持久化对象时收到以下错误:
SQLSTATE[HY093]: 参数号无效:绑定变量的数量与标记的数量不匹配
在 Doctrine/DBAL/Statement.php 第 131 行中抛出。
所以归结为以下问题:如何持久化具有多个@Id 的对象?
【问题讨论】:
标签: php mysql doctrine-orm