如何在ManyToOne Doctrine关系中约束将id号保存为字段值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在ManyToOne Doctrine关系中约束将id号保存为字段值?相关的知识,希望对你有一定的参考价值。
我在下面定义了ManyToOne关系。
持有拥有的side对象,在那里设置了反向对象,导致在拥有端的db中保存行,其中我期望具有id外键(整数)值的列而不是它保存反向表侧的名称(字符串)字段。
换一种说法:
列iptra_documents.document_category_id包含来自iptra_document_category.name的值。我希望在iptra_documents.document_category_id中有iptra_document_category.id值
拥有方:
/**
* @ORMTable(name="iptra_documents")
*/
class IptraDocuments
{
/**
* @var int
*
* @ORMColumn(name="document_id", type="integer", unique=true)
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $documentId;
/**
* @var IptraDocumentCategory
* @ORMColumn(name="document_category_id")
* @ORMManyToOne(targetEntity="AppBundleEntityIptraDocumentCategory", inversedBy="id")})
*/
private $documentCategory;
//.....
public function setCategory(IptraDocumentCategory $documentCategory)
{
$this->documentCategory = $documentCategory;
}
反面:
/**
* @ORMEntity
* @ORMTable(name="iptra_document_category")
*/
class IptraDocumentCategory
{
/**
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
* @ORMColumn(name="id", type="integer")
*/
private $id;
/**
* @ORMColumn(name="parent_id", type="integer")
*/
private $parentId;
/**
* @ORMColumn(name="name", type="string")
*/
private $name;
/**
* @ORMOneToMany(targetEntity="AppBundleEntityIptraDocuments", mappedBy="documentCategory")
*/
private $iptraDocuments;
答案
根据docs,你不需要@ORMColumn
但@ORMJoinColumn
定义“许多”方面
/**
* @var IptraDocumentCategory
*
* @ORMJoinColumn(name="category_id", referencedColumnName="id")
* @ORMManyToOne(targetEntity="AppBundleEntityIptraDocumentCategory", inversedBy="id")})
*/
private $documentCategory;
以上是关于如何在ManyToOne Doctrine关系中约束将id号保存为字段值?的主要内容,如果未能解决你的问题,请参考以下文章
Doctrine 2 不能在 manyToOne 关系中使用 nullable=false?
Doctrine ManyToOne 关系 - 在“设置”时自动删除
使用 Doctrine ORM ManyToOne 关系在相反方向获取实体
Doctrine symfony使用OneToMany删除实体 - ManyToOne关系