我试图将以下Doctrine ORM示例移植到Doctrine ODM。
<?php
/** @Entity */
class User
{
/**
* @ManyToOne(targetEntity="Address")
* @JoinColumn(name="address_id", referencedColumnName="address_id")
*/
private $address;
}
/** @Entity */
class Address
{
// ...
}
我正在寻找@JoinColumn()的副本,我无法在文档中找到它。基本上,我想自己设置引用字段名称和引用的字段名称。我怎么能这样做?
答案 0 :(得分:1)
在MongoDB中,你只能通过id引用,但你不仅限于使用MongoID。事实上,你可以使用你喜欢的任何东西,包括作为id的对象。
这是您应该在MongoODM中执行的操作,要使Address的属性为id,User
将通过该字段的值引用Address
。您还应该设置simple=true
作为参考。
/**
* @Document
*/
class User
{
/**
* @ReferenceOne(targetDocument="Address", simple=true)
*/
protected $address;
}
/**
* @Document
*/
class Address
{
/**
* @Id(strategy="NONE")
*/
protected $someProperty;
}
请记住,如果您在一个或多个用户引用的任何地址中更改该属性的值,那么该引用将会损坏并在Doctrine ODM中导致一些痛苦的错误。