Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony和条令如何获取关联和相关实体_Symfony_Doctrine_Associations - Fatal编程技术网

Symfony和条令如何获取关联和相关实体

Symfony和条令如何获取关联和相关实体,symfony,doctrine,associations,Symfony,Doctrine,Associations,我绞尽脑汁想知道Symfony和Doctrine是如何获取相关实体的 让我们想象一下:我有几个关联的实体: 公司(多通至城市) 城市(多人对地区,多人对公司) 地区(多个地区到国家,一个地区到城市) 国家(从一个地区到另一个地区) 当我呈现公司表单时,我创建了表单事件侦听器(在PRE_SET_数据上),将区域和国家/地区选择框插入到该表单中。 必须根据相关区域设置这些字段中的值 我通过以下方式检索当前公司区域: $company = $event->getData(); $city =

我绞尽脑汁想知道Symfony和Doctrine是如何获取相关实体的

让我们想象一下:我有几个关联的实体:

  • 公司(多通至城市)
  • 城市(多人对地区,多人对公司)
  • 地区(多个地区到国家,一个地区到城市)
  • 国家(从一个地区到另一个地区)
当我呈现公司表单时,我创建了表单事件侦听器(在PRE_SET_数据上),将区域和国家/地区选择框插入到该表单中。 必须根据相关区域设置这些字段中的值

我通过以下方式检索当前公司区域:

$company = $event->getData();
$city = $company->getCity()
这很有效

但当我尝试这个:

$region = $city->getRegion(); // returns NULL
$country = $region->getCountry(); // returns NULL
这些方法返回NULL。但事实上,所有关联都存在,并且条令关联映射是正确的为什么?

根据条令文档:当我为代理对象调用getter时(这些对象是代理,对吗?)-条令应该从数据库获取不足的数据并更新对象。 实际上-方法返回空值


如何获取任何关联实体?(从任何关联深层次)

我只需要删除cache dir…

您应该尝试从控制器而不是表单类获取它

  • $em=$this->getDoctrine()->getManager()
  • $em->initializeObject($obj)//这将初始化您需要的对象,并从数据库中获取真实的对象,而不是代理类
它返回NULL是因为它有太多的级别company->(1)city->(2)region,并且该原则在代理类中丢失。如果这不起作用,请在您访问城市时尝试进行DLQ查询

如果您想了解代理类是如何看起来像dump($company);你会看到它只显示城市的id