我有一个Item
实体,该实体与ManyToOne
实体具有Category
关系。我希望它们由Category的id
以外的其他字段(在这种情况下,称为id2
的字段)加入。我的架构在下面列出。
class Item {
/**
* @ORM\Id
* @ORM\Column(name = "id", type = "integer")
* @ORM\GeneratedValue(strategy = "AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity = "Category")
* @ORM\JoinColumn(name = "category_id", referencedColumnName = "id2")
*/
protected $category;
}
class Category {
/**
* @ORM\Id
* @ORM\Column(name = "id", type = "integer")
* @ORM\GeneratedValue(strategy = "AUTO")
*/
protected $id;
/**
* @ORM\Column(name = "id2", type = "string", length = "255", unique = "true")
*/
protected $id2;
当我尝试保存
Item
时,出现此错误:果然,如果我将
id2
批注中的id
更改为JoinColumn
,则一切正常,但是我需要通过id2
连接实体。这可能吗?编辑
根据《 Doctrine 2》官方文档,我想实现的目标是不可能的。
资料来源:https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/limitations-and-known-issues.html#join-columns-with-non-primary-keys
最佳答案
我认为,Doctrine希望这些是the docs的主键:
从您的代码示例中跳出来的另一件事是category.id2,类型为字符串,我至少希望它是一个整数,但它可能还需要 @JoinColumn 才能正常工作。
您也许可以只使用category.id2上的@Index并将其保留为字符串;反正值得一试。
关于php - 是否可以为JoinColumn引用 'id'以外的其他列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8919910/