嘿,
有没有可能填充一个字段集,而不使用doctrine orm注释映射相应的属性?
我的问题是,我有一个名为Offer的实体,我有一个OfferForm,并且使用此表单,我希望能够编辑另一个名为Address的实体。地址是名为AddressFieldset的字段集,并添加到OfferForm中,如下所示:
class OfferForm extends Form
{
public function __construct($em)
{
parent::__construct('offer');
$this->setHydrator(new DoctrineHydrator($em))
->setObject(new Offer());
$this->add(new AddressFieldset($em));
}
}AddressFieldset如下所示:
class AddressFieldset extends Fieldset
{
public function __construct($em)
{
parent::__construct('address');
// ... form-fields
}
}如果我用ORM映射Offer实体中的地址,一切都会正常工作,字段集将填充来自地址的数据。下面是Offer实体中的address属性:
/**
* @ORM\OneToOne(targetEntity="\Contact\Entity\Address")
*/
private $address;如果我删除注释,address字段集不会填充地址数据:
private $address;即使我在控制器中设置了地址:
$offer->setAddress($address);问题是,我不想在数据库中有一个从offer到address的关系(具有一对一关系),但在其他方面它似乎不起作用:-(
发布于 2014-10-16 19:53:15
我不确定我是否完全理解了你的问题,但我会尽力回答。
如果您不想在数据库的offer表中包含address列,但仍然希望将它们关联起来,那么您应该定义一个从address到offer的one-to-one, BiDirectional关系,这样address就成为拥有方,提供相反的方。从而在数据库中的地址表中产生一个offer列。这对我来说听起来不合逻辑,我想说报价应该是拥有方,但它可能是这样的……
所以在你的地址里:
/** ONE-TO-ONE BIDIRECTIONAL, OWNING SIDE
* @var Offer
* @ORM\OneToOne(targetEntity="Application\Entity\Offer", inversedBy="address")
*/
private $offer;在您的报价中:
/** ONE-TO-ONE BIDIRECTIONAL, INVERSE SIDE
* @var Address
* @ORM\OneToOne(targetEntity="Application\Entity\Address", mappedBy="offer")
*/
private $address;https://stackoverflow.com/questions/26161898
复制相似问题