教义中同一列的两个不同类型的属性



>我正在尝试将两个属性绑定到教义中的同一列。

我的目标是能够从整数值$entity->setSomeId(3)填充和查找整数列,但也能够使用引用的对象$entity->setSome($some)(其中$some是一个对象(

我试图这样定义我的实体:

/**
 * @var Some
 *
 * @ORMOneToOne(targetEntity="Some")
 * @ORMjoinColumn(name="id", referencedColumnName="other_id")
 */
private $someId;
/**
 * @var integer
 *
 * @ORMColumn(name="id", type="integer", length=11, precision=0, scale=0, nullable=false, unique=true)
 */
private $something;

它可以检索数据,但当我尝试创建实体时则不行。

我以这种方式创建一个实体:

$entity = new Entity();
$entity->setSomeId(3)
$entity->getSomeId(); // = 3
$em->persist($entity);
$em->flush();

给我以下错误:

`Integrity constraint: Column id cannot be null`

我想这是因为$something在某个地方压倒了$someId的价值。

有没有可能用教义做我想做的事情?还是我应该只使用引用的对象,而忘记将整数直接分配给此列?

您可能想要一对一的双向关系:

下面的代码片段来自位于关联映射的 Doctrine 文档:

<?php
/** @Entity */
class Customer
{
    // ...
    /**
     * One Customer has One Cart.
     * @OneToOne(targetEntity="Cart", mappedBy="customer")
     */
    private $cart;
    public function getCart() {
        return $this->cart;
    }    
    // ...
}
/** @Entity */
class Cart
{
    // ...
    /**
     * One Cart has One Customer.
     * @OneToOne(targetEntity="Customer", inversedBy="cart")
     * @JoinColumn(name="customer_id", referencedColumnName="id")
     */
    private $customer;
    public function getCustomer() {
        return $this->customer;
    }
    // ...
}

Doctrine 将为您管理您的"ID",因为它管理关系,您需要做的就是与上面示例中的$cart$customer进行交互。您将为每个属性创建一个访问器。

相关内容

  • 没有找到相关文章

最新更新