我试图了解Symfony和Doctrine如何获取相关实体。
让我们想象一下:我有几个相关的实体:
当我呈现公司表单时,我创建表单事件侦听器(在PRE_SET_DATA上),将区域和国家选择框插入此表单。 必须根据相关的Region设置这些字段中的值。
我通过以下方式检索当前的公司区域:
$company = $event->getData();
$city = $company->getCity()
这很好用
但是当我尝试这个时:
$region = $city->getRegion(); // returns NULL
$country = $region->getCountry(); // returns NULL
这些方法返回NULL。但实际上所有关联都存在且Doctrine关联映射是正确的。的为什么吗
根据Doctrine文档:当我为代理对象调用getter时(这些ovjects是代理,对吧?) - Doctrine应从数据库中获取不足的数据并更新对象。 实际上 - 方法返回NULL。
我如何获得任何关联实体? (来自深层次的任何协会)
答案 0 :(得分:0)
我只需要删除缓存目录...
答案 1 :(得分:0)
你应该尝试从你的控制器而不是Form Class
获取它它返回NULL,因为它有太多级别的公司 - >(1)city->(2)区域,并且学说会因代理类而丢失。如果这不起作用,请尝试在拥有城市时进行DLQ查询。
如果你想了解代理类如何看起来像dump($ company);你会看到它只显示城市的id。