学说部分对象......是为了表现吗?

问题描述 投票:1回答:3

我了解到,在学说中我可以归还部分对象。当我只是返回结果集的print_r()时,它们似乎仍然包含字段的定义,除了当我回显它们时我得到第n个。所以我猜这些定义是存在但价值不是。这是为了表现吗?例如。在SQL中我shld做SELECT field1, field2而不是SELECT *

sql doctrine
3个回答
0
投票

据我所知,正如你所说,选择部分对象的能力就是表现。但是,除非您的表非常大,或者包含具有大型数据的列,否则我怀疑会产生非常大的影响。

在第一次创建对象时,Doctrine可以延迟加载未选中的列中的值。这可能会产生性能问题,因为Doctrine将执行更多查询以获取丢失的数据,因此请始终确保选择使用的数据。


0
投票

我完全不明白你的问题但是在DQL中你可以做SELECT *,因为ORM总是会创建一个SELECT field1, field2,....查询。

使用常规SQL,您应该避免选择*,因为它会降低性能。


0
投票

部分查询非常有用,您希望结果不包括各种数据,如密码等。

我将它用于我的REST API,而我不想返回诸如User对象密码之类的数据。

示例可能是:

 SELECT .... JOIN  ... partial user.{user_id, email} .... 

然后用Query::HYDRATE_ARRAY返回数组。显然,如果你没有保湿你的结果,那就不会那么有意义了。

这很有用,因为您不希望检索用户哈希密码以供所有人查看(即在REST API中将数据发送到客户端应用程序,例如主干驱动,甚至是iPhone / Android应用程序)。

© www.soinside.com 2019 - 2024. All rights reserved.