2017-01-02 3 views
0

У меня есть родительский объект, который ссылается на дочернюю сущность и классы записываются следующим образом:Вставка дочерней сущности с родителем в 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; 
} 

Здесь изображением является слабой сущностью, и я не хотите вставить изображение перед вставкой MyEntity объект. В основном, мой вопрос заключается в том, как я могу отобразить форму для MyEntity, так что форма Image появится в ее составе, и изображение будет сохранено при сохранении MyEntity.

ответ

1

Как ваш код имеет targetEntity="Picture", и вы определили Image как дочерний объект. Наверное, есть опечатка, вам нужно исправить.

Вам необходимо добавить cascade={"persist", "update"} в вашу ассоциацию image в MyEntity.

Это гарантирует, что объект изображения создается/обновляется вместе с MyEntity.

Теперь форма Часть

Создать новую FormType для Image, позволяет называть его как ImageType. В вашем MyEntity FormType, добавьте новый FormType как новое поле:

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

Теперь по форме представления, будет создан Ребенок объект (изображение)/обновляется соответствующим образом.

Примечание: Вам необходимо позаботиться о загрузке изображения явно.

Надеюсь, это поможет!