如何在多对一原则关系中将保存ID号限制为字段值



我在下面定义了ManyToOne关系。

持久化拥有方对象,

其中设置了反转对象,导致在拥有方的数据库中保存行,其中列我希望具有 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;

根据文档,您不需要@ORMColumn@ORMJoinColumn定义"许多"方面

/**
 * @var IptraDocumentCategory
 *
 * @ORMJoinColumn(name="category_id", referencedColumnName="id")
 * @ORMManyToOne(targetEntity="AppBundleEntityIptraDocumentCategory", inversedBy="id")})
 */
private $documentCategory;

最新更新