如何在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关系

Doctrine 中的 OneToMany 和 ManyToOne 关系 - 奇怪的映射错误

Doctrine ORM self ManyToOne 由于重复条目而无法插入