>我正在尝试将两个属性绑定到教义中的同一列。
我的目标是能够从整数值$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
进行交互。您将为每个属性创建一个访问器。