没有 MongoId 的 Doctrine MongoDB ODM 中的单向多对一关系
Unidirectional many-to-one relation in Doctrine MongoDB ODM without MongoId
我正在尝试将以下 Doctrine ORM 示例移植到 Doctrine ODM。
<?php
/** @Entity */
class User
{
/**
* @ManyToOne(targetEntity="Address")
* @JoinColumn(name="address_id", referencedColumnName="address_id")
*/
private $address;
}
/** @Entity */
class Address
{
// ...
}
我正在寻找 @JoinColumn() 的对应项,我在文档中找不到它。基本上,我想自己设置引用字段名和引用字段名。我该怎么做?
在 MongoDB 中,您只能通过 ID 进行引用,但不限于使用 MongoID。事实上,您可以使用任何您喜欢的东西,包括作为 id 的对象。
这就是您在 MongoODM 中应该做的,将地址的 属性 作为 id,User
将通过该字段的值引用 Address
。您还应该设置 simple=true
作为参考。
/**
* @Document
*/
class User
{
/**
* @ReferenceOne(targetDocument="Address", simple=true)
*/
protected $address;
}
/**
* @Document
*/
class Address
{
/**
* @Id(strategy="NONE")
*/
protected $someProperty;
}
请记住,如果您在一个或多个用户引用的任何地址中更改 属性 的值,该引用将损坏并导致 ODM 原则出现一些令人痛苦的错误。
我正在尝试将以下 Doctrine ORM 示例移植到 Doctrine ODM。
<?php
/** @Entity */
class User
{
/**
* @ManyToOne(targetEntity="Address")
* @JoinColumn(name="address_id", referencedColumnName="address_id")
*/
private $address;
}
/** @Entity */
class Address
{
// ...
}
我正在寻找 @JoinColumn() 的对应项,我在文档中找不到它。基本上,我想自己设置引用字段名和引用字段名。我该怎么做?
在 MongoDB 中,您只能通过 ID 进行引用,但不限于使用 MongoID。事实上,您可以使用任何您喜欢的东西,包括作为 id 的对象。
这就是您在 MongoODM 中应该做的,将地址的 属性 作为 id,User
将通过该字段的值引用 Address
。您还应该设置 simple=true
作为参考。
/**
* @Document
*/
class User
{
/**
* @ReferenceOne(targetDocument="Address", simple=true)
*/
protected $address;
}
/**
* @Document
*/
class Address
{
/**
* @Id(strategy="NONE")
*/
protected $someProperty;
}
请记住,如果您在一个或多个用户引用的任何地址中更改 属性 的值,该引用将损坏并导致 ODM 原则出现一些令人痛苦的错误。