首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >填充不带Doctrine-ORM注释的字段集

填充不带Doctrine-ORM注释的字段集
EN

Stack Overflow用户
提问于 2014-10-02 21:26:06
回答 1查看 70关注 0票数 0

嘿,

有没有可能填充一个字段集,而不使用doctrine orm注释映射相应的属性?

我的问题是,我有一个名为Offer的实体,我有一个OfferForm,并且使用此表单,我希望能够编辑另一个名为Address的实体。地址是名为AddressFieldset的字段集,并添加到OfferForm中,如下所示:

代码语言:javascript
复制
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如下所示:

代码语言:javascript
复制
class AddressFieldset extends Fieldset
{
    public function __construct($em)
    {
        parent::__construct('address');
        // ... form-fields
    }
}

如果我用ORM映射Offer实体中的地址,一切都会正常工作,字段集将填充来自地址的数据。下面是Offer实体中的address属性:

代码语言:javascript
复制
/**
 * @ORM\OneToOne(targetEntity="\Contact\Entity\Address")
 */
private $address;

如果我删除注释,address字段集不会填充地址数据:

代码语言:javascript
复制
private $address;

即使我在控制器中设置了地址:

代码语言:javascript
复制
$offer->setAddress($address);

问题是,我不想在数据库中有一个从offer到address的关系(具有一对一关系),但在其他方面它似乎不起作用:-(

EN

回答 1

Stack Overflow用户

发布于 2014-10-16 19:53:15

我不确定我是否完全理解了你的问题,但我会尽力回答。

如果您不想在数据库的offer表中包含address列,但仍然希望将它们关联起来,那么您应该定义一个从address到offer的one-to-one, BiDirectional关系,这样address就成为拥有方,提供相反的方。从而在数据库中的地址表中产生一个offer列。这对我来说听起来不合逻辑,我想说报价应该是拥有方,但它可能是这样的……

所以在你的地址里:

代码语言:javascript
复制
/** ONE-TO-ONE BIDIRECTIONAL, OWNING SIDE
 * @var Offer
 * @ORM\OneToOne(targetEntity="Application\Entity\Offer", inversedBy="address")
 */
private $offer;

在您的报价中:

代码语言:javascript
复制
/** ONE-TO-ONE BIDIRECTIONAL, INVERSE SIDE
 * @var Address
 * @ORM\OneToOne(targetEntity="Application\Entity\Address", mappedBy="offer")
 */
private $address;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26161898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档