Symfony 4 / Doctrine 2-获取实际对象而不是代理

le

我有以下实体:

/**
 * @ORM\Entity(repositoryClass="App\Repository\CourseLevelRepository")
 */
class CourseLevel
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @var CourseLevel
     *
     * @ORM\ManyToOne(targetEntity="App\Entity\CourseLevel", fetch="EAGER")
     * @ORM\JoinColumn(nullable=true, referencedColumnName="id")
     */
    private $nextCourseLevel;   


    ...
}

如您所见,它建立一个树结构,因此任何记录都可以通过$ nextCourseLevel的ManyToOne关系指向它的父级。

然后,在存储库中通过查询获取元素列表:

class CourseLevelRepository extends ServiceEntityRepository
{
    public function __construct(ManagerRegistry $registry)
    {
        parent::__construct($registry, CourseLevel::class);
    }

    public function fetchFiltered(array $filters)
    {
        $builder = $this->createQueryBuilder('cl');
        $builder->setFirstResult(0);
        $builder->setMaxResults(10)
        $builder->orderBy('cl.name', 'asc');

        return $builder->getQuery()->getResult();
    }
}

让我们假设以下数据集:

id | next_course_level
-------------------------
1  | 2
2  | null

为此,我将收到以下对象:-id = 1的对象,它是App \ Entity \ CourseLevel的对象($ nextCourseLevel设置为对象id = 2的代理)-id = 2的对象是代理对象。

发生这种情况的原因可能是关系-id = 1的对象将id = 2指向父对象。

但是,如何强制将所有数据作为真实对象而不是代理来获取?放fetch =“ EAGER”不会改变任何事情:(

LBA

您必须加入并选择您的关联才能获取对象而不是代理。

此处检查文档

来自文档的示例:

// src/Repository/ProductRepository.php
public function findOneByIdJoinedToCategory($productId)
{
$entityManager = $this->getEntityManager();

$query = $entityManager->createQuery(
    'SELECT p, c
    FROM App\Entity\Product p
    INNER JOIN p.category c
    WHERE p.id = :id'
)->setParameter('id', $productId);

return $query->getOneOrNullResult();
}

“当您一次(通过联接)一次检索产品和类别数据时,Doctrine将返回真正的Category对象,因为不需要延迟加载任何内容。”

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

返回数组,不是Doctrine查询中的对象-Symfony2

来自分类Dev

返回数组,不是来自Doctrine查询的对象-Symfony2

来自分类Dev

了解 Symfony 4 中的问题 Doctrine 2 ORM Query Builder

来自分类Dev

Symfony 4 Doctrine 2 findby代理应用联接和自定义联接不起作用

来自分类Dev

Symfony 4 不使用 Doctrine ODM 补水对象

来自分类Dev

Symfony 2(Doctrine)不将结果视为类对象

来自分类Dev

Symfony 2 Doctrine ODM参考

来自分类Dev

Symfony2 / Doctrine-通过博客获取标签

来自分类Dev

Symfony2 / Doctrine回滚差异

来自分类Dev

Symfony2 / Doctrine联合查询

来自分类Dev

避免延迟加载Doctrine Symfony2

来自分类Dev

获取doctrine2 / symfony2中的最后一个元素

来自分类Dev

Symfony2 / Doctrine2-从数据库获取日期时间时的问题

来自分类Dev

Symfony2和Doctrine2:如何获取帖子的所有标签?

来自分类Dev

是否可以使用Doctrine的MongoDB ODM从延迟加载的对象中获取实际的类名而不是代理类名?

来自分类Dev

语法错误行0,列60:错误:预期的字符串结尾,为“ ON”-Symfony 4 / Doctrine2

来自分类Dev

如何使用symfony3,doctrine2和stofDoctrineExtensionsBundle获取Gedmo Tree元素的路径

来自分类Dev

Symfony2,Doctrine,从数据库获取数据以生成Excel

来自分类Dev

(Symfony 3 / Doctrine 2)更新了夹具可以节省gengen,但不能在WebTestCase中获取它们

来自分类Dev

symfony2 doctrine2与实体的批处理错误

来自分类Dev

Symfony2,Doctrine2,MySql,查看表

来自分类Dev

Symfony2 + Doctrine2中的CakePHP模型行为?

来自分类Dev

Symfony2-Doctrine2 QueryBuilder在ManyToMany字段中

来自分类Dev

使用QueryBuilder的Symfony2 / Doctrine2 innerJoin

来自分类Dev

symfony2 doctrine2与实体的批处理错误

来自分类Dev

在Symfony2上的Doctrine2 YML映射

来自分类Dev

Symfony2 Doctrine2使用集合-表演

来自分类Dev

列的总和-Doctrine2 / Symfony2

来自分类Dev

Symfony2和Doctrine2-设置为onDelete

Related 相关文章

  1. 1

    返回数组,不是Doctrine查询中的对象-Symfony2

  2. 2

    返回数组,不是来自Doctrine查询的对象-Symfony2

  3. 3

    了解 Symfony 4 中的问题 Doctrine 2 ORM Query Builder

  4. 4

    Symfony 4 Doctrine 2 findby代理应用联接和自定义联接不起作用

  5. 5

    Symfony 4 不使用 Doctrine ODM 补水对象

  6. 6

    Symfony 2(Doctrine)不将结果视为类对象

  7. 7

    Symfony 2 Doctrine ODM参考

  8. 8

    Symfony2 / Doctrine-通过博客获取标签

  9. 9

    Symfony2 / Doctrine回滚差异

  10. 10

    Symfony2 / Doctrine联合查询

  11. 11

    避免延迟加载Doctrine Symfony2

  12. 12

    获取doctrine2 / symfony2中的最后一个元素

  13. 13

    Symfony2 / Doctrine2-从数据库获取日期时间时的问题

  14. 14

    Symfony2和Doctrine2:如何获取帖子的所有标签?

  15. 15

    是否可以使用Doctrine的MongoDB ODM从延迟加载的对象中获取实际的类名而不是代理类名?

  16. 16

    语法错误行0,列60:错误:预期的字符串结尾,为“ ON”-Symfony 4 / Doctrine2

  17. 17

    如何使用symfony3,doctrine2和stofDoctrineExtensionsBundle获取Gedmo Tree元素的路径

  18. 18

    Symfony2,Doctrine,从数据库获取数据以生成Excel

  19. 19

    (Symfony 3 / Doctrine 2)更新了夹具可以节省gengen,但不能在WebTestCase中获取它们

  20. 20

    symfony2 doctrine2与实体的批处理错误

  21. 21

    Symfony2,Doctrine2,MySql,查看表

  22. 22

    Symfony2 + Doctrine2中的CakePHP模型行为?

  23. 23

    Symfony2-Doctrine2 QueryBuilder在ManyToMany字段中

  24. 24

    使用QueryBuilder的Symfony2 / Doctrine2 innerJoin

  25. 25

    symfony2 doctrine2与实体的批处理错误

  26. 26

    在Symfony2上的Doctrine2 YML映射

  27. 27

    Symfony2 Doctrine2使用集合-表演

  28. 28

    列的总和-Doctrine2 / Symfony2

  29. 29

    Symfony2和Doctrine2-设置为onDelete

热门标签

归档