我有两个实体,$ 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持久保存对象?
答案 0 :(得分:0)
StaffPub的ID是多少?你确定这不是OneToOne吗?反转的命名表明了它。