【发布时间】:2017-08-27 16:17:23
【问题描述】:
我实际上正在学习 Symfony,并且我正在制作自己的 UserBundle,因为我必须使用在线 API 来管理用户。所以我加入了具有多对一关系的用户和组对象。目前一切正常。
Symfony 正在实现每个页面上的 User 对象并获取组的 id(参见 var_dump),但我希望 Symfony 获取每个页面上的整个 Group 对象,而不仅仅是它的 id。
User {#467 ▼
-id: 104
-uuid: "~"
-username: "~"
-lastLogin: null
-websiteActivity: null
-clientToken: "1c667ad4-07e2-4ffa-8db1-9997eadbbc4b"
-accessToken: "b183f850ce4d4decb07cb7485c1d0a88"
-dataCheck: DateTime {#457 ▼
+"date": "2017-08-27 18:23:31.000000"
+"timezone_type": 3
+"timezone": "Europe/Berlin"
}
-reputation: 0
-group: Group {#456 ▼
+__isInitialized__: false
-id: 4
-inheritId: null
-name: null
-chatColor: null
-websiteName: null
-websiteColor: null
…2
}
}
如果你知道怎么做,那真的很有帮助。
非常感谢。
【问题讨论】:
-
不确定你在问什么 - 看起来 User 对象正在返回一个 Group 对象,正如你所期望的那样
-
它不会返回整个对象,而只是返回 id 因为 Symfony 只在每个页面上获取用户。 Group 对象不应为空。
-
注意它是如何没有被初始化的——那是因为你正在做一个用户对象的
var_dump()而没有任何加入到 Group 实体。我敢打赌,如果您执行var_dump($user->getGroup()->getName()),您将获得您期望的值,然后 Group 将被初始化,因为 Doctrine 将使用另一个查询加载该实体。本质上,您使用var_dump()进行调试而不理解底层。另外,请改用dump();它是在 Symfony 2.6 中引入的,并且要好得多。 -
我的意思是我可以在我所有的控制器上调用它,但它会非常重复,因为我几乎所有的页面都需要它。这就是为什么我正在寻找另一种方法来做到这一点。 (注:我正在使用转储)
-
我需要看看你是怎么称呼它的。它是使用 ParamFetcher 自动抓取还是直接从 EntityManager 抓取?如果你展示你是如何做到的,我可以提供帮助。
标签: php symfony doctrine-orm symfony-3.3