symfony - 从教义2中的代理对象获取 "true"对象

标签 symfony doctrine-orm

Doctrine 使用代理对象来表示相关对象,以便于延迟加载。这是一个非常酷的功能,但它会导致我试图完成的事情出现问题。

我已经自定义了我的用户对象,因此它们都需要与不同的对象相关联,我将其称为城市。这种关系运作良好。

我有一个表格,我的用户填写它以生成另一个对象,街道。街道也与城市对象有关。我不想让我的用户在填写表单时选择城市,而是想在将对象保存到数据库之前自动设置它。

我尝试使用 $event->setCity($user->getCity()) ,但由于 $user->getCity() 返回一个代理对象,这会产生错误。我可以从代理对象调用一个函数来获取真实的吗?

注意:我知道我可以创建一个带有连接的自定义查询,以强制学说实际加载相关对象,但由于这是用户(使用 FOSUserBundle),因此很难正确执行。

最佳答案

编辑:正如@flu 所提到的,这种方法不会返回“真实”对象。但是,如果您需要来自对象的数据,它会很有用。
然后,您可以通过一些身份从 ObjectManager 中获取真实对象。

我们可以使用 Proxy 接口(interface)中的 __load() 方法

$proxyObject->__load();

关于symfony - 从教义2中的代理对象获取 "true"对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8337754/

相关文章:

symfony - 选择众多服务之一作为要使用的服务

php - Controller 中的 symfony2 @Template

php - ONGR ElasticsearchBundle将虚拟字段映射到ElasticSearch

doctrine - 在 DQL Order by 子句中使用乘法

forms - 带有 "allow_add"的 Symfony CollectionType 未将子实体添加到父实体

Symfony2 : Custom Error Page Extend base. html.twig

php - Symfony:不推荐使用 form_enctype

Controller 中的 Symfony2 图像路径

php - 在 Doctrine 2 (Symfony 2) 中排序具有可排序行为的实体

php - 帮助使用 DRY 原则在服务类中创建灵活的基础 'find' 方法