Say*_*Net 6 orm symfony doctrine-orm
我从现有数据库中实现了一个带有 Symfony 2 的 Web 应用程序。
我已经建立了一个实体,其主键由两个外键组成。
例子:
Entity1 具有复合主键:property1 (PK)、property2 (PK) Entity2 主键由两个外键组成:property1 (PK FK)、property2 (PK FK)、propriete3 (PK)
我不知道如何实现这个关联:
在 entity2 我做:
/**
* @ORM\ManyToOne (targetEntity = "Entity1")
* @ORM\JoinColumns ({
* @ORM\JoinColumn (name = "property1" referencedColumnName = "property1")
* @ORM\JoinColumn (name = "property2" referencedColumnName = "property2")
* @ORM\Id
* @})
*/
private $entity1;
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
不可能将实体“ExempleBundle\Entity\Entite1”与复合主键映射为另一个实体“ExempleBundle\Entity\Entite2#entite1”的主键的一部分。
如何正确处理这种与 Doctrine 的关联
我试图按照这个例子,但我不明白:http : //docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/composite-primary-keys.html#use-case-1-动态属性
您能否举一个具有类似案例的两个实体的示例,尤其是在这种情况下如何进行连接。
小智 5
我找到了解决该问题的解决方法,即定义一个单独的外键,使用原始外键列作为连接列。
/** @Id @Column(...) */
protected $property1;
/** @Id @Column(...) */
protected $property2;
/** @Id @Column(...) */
protected $property3;
/**
* @ManyToOne(targetEntity="Entity1")
* @JoinColumns({
* @JoinColumn(name="property1", referencedColumnName="property1"),
* @JoinColumn(name="property2", referencedColumnName="property2")
* })
**/
protected $foreignObject;
Run Code Online (Sandbox Code Playgroud)
BAD*_*med -1
Doctrine2 不管理外部复合键来引用实体及其复合主键
Doctrine2正确管理复合主键的情况主要有:
文章(id、标题、...)、ArticleAttributes(#article_id、#attribute、值、...)
在您的情况下,您想要引用一个没有唯一标识符但有复合键的实体,Doctrine 不管理这种情况。关联实体类型只能有复合键。
一般来说,我避免在主要模型上使用复合键。我为关联类型模型保留了复合键。
因此,解决方案是为主模型 Entity1 使用主键
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
13647 次 |
| 最近记录: |