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

赛义德马拉

我有两个实体 Product 和 Category,关联类型为 ManyToOne,假设我想创建一个新产品并且我已经知道它的类别(意味着我知道 ID 类别)

类产品

/**
 * @ORM\Entity
 * @ORM\Table(name="product")
 */
class Product
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=100)
     */
    private $name;

    /**
     * @ORM\ManyToOne(targetEntity="Category")
     * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
     */
    private $category;
}

课程类别

/**
 * @ORM\Entity
 * @ORM\Table(name="category")
 */
class Category
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
}

SCRNARIO:创建新产品并假设我知道 ID 类别,所以我们不需要使用 Category Entity 的 find 方法来获取它(使事情更快)

$em = $this->get('doctrine')->getManager();
$category = new Category();
$category->setId(12);
$product = new Product();
$product->setName('product 1');
$product->setCategory($category);
$em->persist($product);
$em->flush();

上面的代码不起作用它会产生一个异常:

通过关系“AOBundle\Entity\Product#category”发现一个新实体,该实体未配置为对实体进行级联持久化操作:AOBundle\Entity\Category@0000000049a05dc500000000723a1be6。解决这个问题:要么在这个未知实体上显式调用 EntityManager#persist() 要么配置级联在映射中持久化这个关联,例如@ManyToOne(..,cascade={"persist"})。如果您无法找出导致问题的实体,请执行 'AOBundle\Entity\Category#__toString()' 以获取线索。

但是当我使用 find 方法获取它工作的类别实例时,但我不喜欢这个解决方案,我想让应用程序更快,是否有任何解决方案。谢谢

丹·杜米特留

您可以为此使用 EntityManager 的 getReference 方法。

您的代码应如下所示。

$em = $this->get('doctrine')->getEntityManager();
$category = $em->getReference('AppBundle:Category', 12);

$product = new Product();
$product->setName('product 1');
$product->setCategory($category);

$em->persist($product);
$em->flush();

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

symfony2 doctrine2:将select元素添加到现有实体

来自分类Dev

symfony2 doctrine2与实体的批处理错误

来自分类Dev

symfony2 doctrine2与实体的批处理错误

来自分类Dev

symfony2 doctrine2不刷新新实体

来自分类Dev

Symfony2,Doctrine2,实体映射

来自分类Dev

doctrine2 symfony2关系实体

来自分类Dev

具有Symfony2的表单-具有某些不可变构造函数参数和OneToMany关联的Doctrine实体

来自分类Dev

Symfony2 Doctrine2多对多将所有实体及其关系实体

来自分类Dev

Symfony2 Doctrine2多对多将所有实体及其关系实体

来自分类Dev

ManyToOne实体上的Symfony2 / Doctrine UniqueEntity被忽略

来自分类Dev

Symfony2和Doctrine实体未定义方法

来自分类Dev

在Symfony2 + Doctrine上以XML映射实体

来自分类Dev

正确的迁移路径,以在现有实体中为symfony2 / doctrine添加唯一的令牌列

来自分类Dev

使用Symfony2中的Doctrine ORM注释将“间接关联”实体添加为成员

来自分类Dev

Doctrine2 + Symfony2:如何在Symfony2中使用命名空间的Doctrine实体?

来自分类Dev

在Symfony / Doctrine中过滤关联实体集合

来自分类Dev

Symfony Doctrine 实体概述

来自分类Dev

Symfony2,Doctrine2在关联sth#category上找到了类型为Doctrine \ Common \ Collections \ ArrayCollection的实体,但期望某物

来自分类Dev

Symfony2 / Doctrine2:如何访问实体注释映射?

来自分类Dev

在Symfony2中将Doctrine2实体侦听器注册为服务

来自分类Dev

symfony2 doctrine2:删除在过去的迁移中使用的实体类

来自分类Dev

Doctrine2 Symfony2扩展实体在不同的包中但具有相同的数据库表名称

来自分类Dev

如何不使用Doctrine刷新Symfony2中的持久实体?

来自分类Dev

Symfony2:如何将“ Doctrine-> getRepository-> find”从实体转换为数组?

来自分类Dev

一组实体未更新(Symfony2和Doctrine)

来自分类Dev

如何从数据库中的现有数据生成子弹字段-Doctrine Symfony2

来自分类Dev

从现有表生成单个Symfony2实体

来自分类Dev

ZF2、Doctrine2、Gedmo - 具有关联的 SoftDelete JTI 实体

来自分类Dev

Doctrine2-使用ORM QueryBuilder连接没有关联的实体

Related 相关文章

  1. 1

    symfony2 doctrine2:将select元素添加到现有实体

  2. 2

    symfony2 doctrine2与实体的批处理错误

  3. 3

    symfony2 doctrine2与实体的批处理错误

  4. 4

    symfony2 doctrine2不刷新新实体

  5. 5

    Symfony2,Doctrine2,实体映射

  6. 6

    doctrine2 symfony2关系实体

  7. 7

    具有Symfony2的表单-具有某些不可变构造函数参数和OneToMany关联的Doctrine实体

  8. 8

    Symfony2 Doctrine2多对多将所有实体及其关系实体

  9. 9

    Symfony2 Doctrine2多对多将所有实体及其关系实体

  10. 10

    ManyToOne实体上的Symfony2 / Doctrine UniqueEntity被忽略

  11. 11

    Symfony2和Doctrine实体未定义方法

  12. 12

    在Symfony2 + Doctrine上以XML映射实体

  13. 13

    正确的迁移路径,以在现有实体中为symfony2 / doctrine添加唯一的令牌列

  14. 14

    使用Symfony2中的Doctrine ORM注释将“间接关联”实体添加为成员

  15. 15

    Doctrine2 + Symfony2:如何在Symfony2中使用命名空间的Doctrine实体?

  16. 16

    在Symfony / Doctrine中过滤关联实体集合

  17. 17

    Symfony Doctrine 实体概述

  18. 18

    Symfony2,Doctrine2在关联sth#category上找到了类型为Doctrine \ Common \ Collections \ ArrayCollection的实体,但期望某物

  19. 19

    Symfony2 / Doctrine2:如何访问实体注释映射?

  20. 20

    在Symfony2中将Doctrine2实体侦听器注册为服务

  21. 21

    symfony2 doctrine2:删除在过去的迁移中使用的实体类

  22. 22

    Doctrine2 Symfony2扩展实体在不同的包中但具有相同的数据库表名称

  23. 23

    如何不使用Doctrine刷新Symfony2中的持久实体?

  24. 24

    Symfony2:如何将“ Doctrine-> getRepository-> find”从实体转换为数组?

  25. 25

    一组实体未更新(Symfony2和Doctrine)

  26. 26

    如何从数据库中的现有数据生成子弹字段-Doctrine Symfony2

  27. 27

    从现有表生成单个Symfony2实体

  28. 28

    ZF2、Doctrine2、Gedmo - 具有关联的 SoftDelete JTI 实体

  29. 29

    Doctrine2-使用ORM QueryBuilder连接没有关联的实体

热门标签

归档