如何强制symfony实体经理识别现有的子实体?

没有人

我正在使用Fos_rest进行网络服务。我从JSON的Angular应用中检索一个实体。JSON范例:

{"model":
   {
    "trademark":
      {"id":1,"name":"Alfa Romeo"},
    "type":
      {"id":1,"code":"car","name":"Car"},
    "name":"147"
    }
}

该实体由两个子实体组成,分别称为“商标”和“类型”。

收到POST时,控制器中将执行以下操作:

public function cpostAction(Request $request, $idTrademark)
   {
        $entity = new Model();
        $form = $this->createForm(ModeloType::class, $entity);
        $form->handleRequest($request);  
        if ($form->isValid()) {
            $entity = $form->getData();
            $em = $this->getDoctrine()->getManager();
            $em->persist($entity);
            $em->flush();

            /*do things with the entity and return*/
        }
   }

在执行“刷新”时会出现问题,因为它将“商标”和“类型”识别为新实体,因为拥有“ id”时这些实体已经存在。如何强制实体管理器从数据库中识别实体“商标”和“类型”?

PS:表格类型:

class ModelType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name')
                ->add('trademark', TrademarkType::class)
                ->add('type', TypeType::class)
                ->add('id');
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Model',
            'csrf_protection' => false,
            'allow_extra_fields' => true,
        ));
    }
}

您不应该执行find():而不是执行数据库请求。更喜欢:

$em->getReference(Type::class, $entity->getType()->getId())

它不是数据库查询。唯一的问题是getReference不检查实体是否仍存在于数据库中。对我而言getReference,仅应将id转换为原则代理对象

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VS如何识别现有图标?

来自分类Dev

Vim插件无法识别现有的Perl支持

来自分类Dev

如何使GVM识别现有的Grails和Groovy安装?

来自分类Dev

如何识别现有的NFS或CIFS安装,是硬安装还是软安装?

来自分类Dev

如何使GVM识别现有的Grails和Groovy安装?

来自分类Dev

如何在无法启动和损坏的 linux 系统上识别现有的分区结构

来自分类Dev

如何“更新”现有的命名实体识别模型-而不是从头开始创建?

来自分类Dev

如何“更新”现有的命名实体识别模型-而不是从头开始创建?

来自分类Dev

如何更新现有的断开连接的实体

来自分类Dev

从现有的微风中创建实体

来自分类Dev

Visual Studio 2012无法识别现有的单元测试

来自分类Dev

如何从现有数据库更新 Symfony 实体?

来自分类Dev

Symfony2 ManyToMany 关系也保存了现有的相关实体

来自分类Dev

实体框架添加所有子实体

来自分类Dev

AliceBundle有多个实体经理?

来自分类Dev

使用现有的嵌套实体保存新的断开连接的实体,而无需复制现有的实体

来自分类Dev

Doctrine Symfony2 与现有实体保持关联实体

来自分类Dev

如何自动删除子实体?

来自分类Dev

带有“ allow_add”的Symfony CollectionType未将子实体添加到父实体

来自分类Dev

带有“ allow_add”的Symfony CollectionType未将子实体添加到父实体

来自分类Dev

如何在Datomic中使用现有的UUID表示实体?

来自分类Dev

如何从现有的ORACLE序列中为实体生成ID?

来自分类Dev

如何将现有的JPA实体映射到PicketLink

来自分类Dev

如何将现有的 PDO 对象注入到学说实体管理器

来自分类Dev

如何防止 Automapper 替换实体框架拥有的实体?

来自分类Dev

将付费应用变成免费应用,如何识别现有用户

来自分类Dev

Python:如何识别现有字段值并避免在编写时进行更新

来自分类Dev

Symfony的复杂表格-父子实体

来自分类Dev

识别现有无花果,斧头的条形颜色

Related 相关文章

  1. 1

    VS如何识别现有图标?

  2. 2

    Vim插件无法识别现有的Perl支持

  3. 3

    如何使GVM识别现有的Grails和Groovy安装?

  4. 4

    如何识别现有的NFS或CIFS安装,是硬安装还是软安装?

  5. 5

    如何使GVM识别现有的Grails和Groovy安装?

  6. 6

    如何在无法启动和损坏的 linux 系统上识别现有的分区结构

  7. 7

    如何“更新”现有的命名实体识别模型-而不是从头开始创建?

  8. 8

    如何“更新”现有的命名实体识别模型-而不是从头开始创建?

  9. 9

    如何更新现有的断开连接的实体

  10. 10

    从现有的微风中创建实体

  11. 11

    Visual Studio 2012无法识别现有的单元测试

  12. 12

    如何从现有数据库更新 Symfony 实体?

  13. 13

    Symfony2 ManyToMany 关系也保存了现有的相关实体

  14. 14

    实体框架添加所有子实体

  15. 15

    AliceBundle有多个实体经理?

  16. 16

    使用现有的嵌套实体保存新的断开连接的实体,而无需复制现有的实体

  17. 17

    Doctrine Symfony2 与现有实体保持关联实体

  18. 18

    如何自动删除子实体?

  19. 19

    带有“ allow_add”的Symfony CollectionType未将子实体添加到父实体

  20. 20

    带有“ allow_add”的Symfony CollectionType未将子实体添加到父实体

  21. 21

    如何在Datomic中使用现有的UUID表示实体?

  22. 22

    如何从现有的ORACLE序列中为实体生成ID?

  23. 23

    如何将现有的JPA实体映射到PicketLink

  24. 24

    如何将现有的 PDO 对象注入到学说实体管理器

  25. 25

    如何防止 Automapper 替换实体框架拥有的实体?

  26. 26

    将付费应用变成免费应用,如何识别现有用户

  27. 27

    Python:如何识别现有字段值并避免在编写时进行更新

  28. 28

    Symfony的复杂表格-父子实体

  29. 29

    识别现有无花果,斧头的条形颜色

热门标签

归档