添加对象(如果它尚不存在)(嵌入式表格)Symfony 2

时间:2015-05-12 15:18:52

标签: symfony symfony-forms

我需要一些帮助。我有一个表格,增加了一个医疗记录,通过许多关系与实体患者联系。

MedicalRecordType.php

class MedicalRecordType extends AbstractType {

    public function buildForm(FormBuilder $builder, array $options)
            {
                  $builder->add('service','text');
                  $builder->add('patient','collection', array('type' => new PatientType()));
                  $builder->add('piece','collection', array('type' => new PieceType()));
            } 
}

PatientType.php

class PatientType extends AbstractType {

    public function buildForm(FormBuilderInterface $builder, array $options) {

         $builder
                ->add('Firstname', 'text')
                ->add('Secondname', 'text')
                ->add('DateOfBirth', 'date', array(
                    'widget' => 'single_text',
                    'format' => 'yyyy-MM-dd',
                ))
        ;
    }

添加新的医疗记录时,如果患者已经存在于数据库中,我不想同时添加患者数据。感谢您的任何建议。

我知道我可以在控制器中使用一个简单的条件来做到这一点,但它会占用很多代码,我想知道symfony是否有更简单的方法。

1 个答案:

答案 0 :(得分:0)

您的实体需要oneToMany关系:
一个MedicalReport拥有许多患者实体 你可以在表单构建器中执行类似的操作:

$builder->add('patients','entity', array(
   'class' => 'YourBundle:Patient',
));

如果您的实体映射是正确的,则doctrine将自动插入或更新所需的行