在Symfony中插入父实例的子实体

时间:2017-01-02 05:07:36

标签: php orm symfony

我有一个父实体,它指的是一个子实体,这些类的编写如下:

class MyEntity {
  /**
  * ORM Annotations
  */
  private $id;

  /**
  * ORM Annotations
  */
  private $name;

  /**
  * @var string
  * @ORM\OneToOne(targetEntity="Picture")
  */
  private $image;

  /** Getters & Setters **/
}

private Image {
  private $id;
  private $image_url;
}

这里,Image是一个弱实体,我不想在插入MyEntity对象之前插入图像。基本上,我的问题是,如何呈现MyEntity的表单,以便Image表单作为其中的一部分显示,并在保存MyEntity时保存图像。

1 个答案:

答案 0 :(得分:1)

为什么您的代码有targetEntity="Picture",并且您已将Image定义为子实体。我想有一个错字,你需要纠正。

您需要在cascade={"persist", "update"}中的image关联中添加MyEntity

这将确保Image实体与MyEntity一起创建/更新。

现在表单部分

FormType创建新的Image,我们将其称为ImageType。 在MyEntity FormType中,将新FormType添加为新字段:

$builder
    ->add('image', ImageType::class, array(
        'label' => 'Image'
));

现在,在表单提交时,将相应地创建/更新子实体(图像)。

注意:您需要明确处理图片上传。

希望这有帮助!