HY,
是否可以填充字段集,而不必使用doctrine-orm注释映射相应的属性?
我的问题是我有一个名为Offer的实体,我有一个OfferForm,并且我希望能够编辑另一个名为Address的实体。 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实体中映射地址一切正常,则fiedset将填充来自地址的数据。以下是商品实体中的地址属性:
/**
* @ORM\OneToOne(targetEntity="\Contact\Entity\Address")
*/
private $address;
如果删除注释,则地址字段集不会填充地址数据:
private $address;
即使我在控制器中设置了地址:
$offer->setAddress($address);
问题是,我不想在数据库中提供与地址之间的关系(具有一对一关系),但是否则它似乎不起作用: - (
答案 0 :(得分:1)
我不确定我的问题是否完全,但我会尽力回答。
如果您不想在数据库中的商品表中使用地址列,但仍想要关联它们,那么您应该从要提供的地址定义one-to-one
, BiDirectional
关系,以便地址成为拥有者并提供反面。
导致数据库中地址表中的商品列。这对我来说听起来不合逻辑,我会说这个提议应该是拥有的一方,但这样可能就是这样......
所以在你的地址:
/** 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;