gpt4 book ai didi

php - 如何在没有特殊字段的情况下在 Symfony 中加载实体

转载 作者:行者123 更新时间:2023-12-02 20:55:11 25 4
gpt4 key购买 nike

我想在我的 Controller 中加载一个实体,但不希望该实体包含所有字段。我之前使用 Jms-Serializer 这样做过,您可以在其中使用组注释,以避免加载特殊字段。但你必须将你的对象序列化为 json/xml 等。我不希望它被序列化,我只想要该组的功能。我搜索了这个网站和互联网,但没有找到任何解决我的问题的方法。

希望有人理解我的意思并得到一个想法:)

最佳答案

有几种可能性:

  1. 使用部分对象(这将交付在水合过程中仅填充指定属性的对象):http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/partial-objects.html#partial-objects

这很危险,您应该格外小心,因为从各个角度看它都像是一个满载的实体。您必须知道为什么字段为空 - 只是因为它为空或者因为它在水合作用期间尚未填充。

  • 不要对对象进行水合,而是查询数组作为水合结果(您可以再次指定要取回的数组键):http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#array-hydration
  • 将此用于需要大量只读数据和复杂联接的性能敏感查询。但请注意,您没有任何可以使用 Doctrine 管理的实体(例如更新、删除等)。

  • 使用DTO,它们是对象,但不是 Doctrine 管理的实体,您可以再次指定您想要使用新语法进行水合的内容:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#new-operator-syntax
  • 基本上与 2) 中的建议相同,但这次你会得到对象。这样您就可以运用您所有的 OOP 智慧。

  • 创建您自己的自定义水合模式 - 您可以在其中自行定义实体的水合方式:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#custom-hydration-modes
  • 非常先进的水平。仅当您需要为多个实体提供特殊的水合模式并且实际上没有其他选项可以满足您所需的性能和质量时,才有用。

    关于php - 如何在没有特殊字段的情况下在 Symfony 中加载实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40609616/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com