没有主键的Doctrine ManyToOne关系

时间:2014-03-20 21:21:48

标签: php sql entity-framework symfony doctrine-orm

我有这样的表结构:

但是在symfony2项目中company表对我来说没用。所以,我需要像这样建立关系:

我在shop实体中创建了ManyToOne单向关系,代码:

/**
 * @ORM\ManyToOne(targetEntity="Currency")
 * @ORM\JoinColumn(name="company_id", referencedColumnName="company_id")
 */
protected $currency;

但是,我得到了实体错误:

  

引用的列名称' company_id'必须是目标实体类的主键列' Acme \ ShopsBundle \ Entity \ Currency'。

如果我尝试将company_id实体上的currency定义为Id

/**
 * @ORM\Id
 * @ORM\Column(name="company_id", type="integer")
 * @ORM\GeneratedValue(strategy="NONE")
 */
protected $companyId;

然后我在调试时遇到另一个实体错误:

  

协会'货币'的加入列必须匹配目标实体的所有标识符列' Acme \ ShopsBundle \ Entity \ Shop'但是' id'缺少

但是如果那时我从主currency id中删除了主键的定义,那么一切正常,但问题是从currency.id删除主键不是好主意所以我不喜欢这样。

还有另一种解决方案来映射这些实体而没有任何错误吗?

对不起我的英语,不是我的母语..

0 个答案:

没有答案