【发布时间】:2012-01-10 09:15:53
【问题描述】:
Doctrine 使用代理对象来表示相关对象,以便于延迟加载。这是一个非常酷的功能,但它会导致我正在尝试完成的事情出现问题。
我已经自定义了我的用户对象,因此它们都需要与不同的对象相关联,我将其称为城市。这种关系运作良好。
我有一个表单,我的用户填写它以生成另一个对象,街道。街道也与城市对象有关。我不想让我的用户在填写表单时选择城市,而是希望在将对象保存到我的数据库之前自动设置它。
我尝试使用$event->setCity($user->getCity()),但由于 $user->getCity() 返回一个代理对象,这会产生错误。有没有我可以从代理对象调用的函数来获取真正的函数?
注意:我知道我可以创建一个带有连接的自定义查询,以强制学说实际加载相关对象,但由于这是用户(使用 FOSUserBundle),因此很难正确执行。 em>
【问题讨论】:
-
我认为这应该可以工作,即使
$user->getCity()返回一个代理对象,因为代理对象应该像真正的对象一样表现。你能告诉我们你遇到的错误吗? -
正如gregOire 所说,代理对象继承自城市对象。你收到什么样的错误?当 Doctrine 保持关系时,这些总是代理对象。
-
刚刚注意到我的问题,我的实体类中的城市类的命名空间错误。感谢您的帮助。
标签: symfony doctrine-orm