因此,我似乎受到仅影响Symfony中的生产模式而非开发者模式的问题的困扰。这次,我有一个ManyToOne关联,我试图只获取没有关联的实体(即它们在数据库中有一个NULL值)。这与我在dev移动中所期望的完全一样,但在prod模式下,Doctrine会抛出一个“无法识别的字段”异常......对于一个绝对存在的字段。
以下是相关实体的相关部分(Page.php):
<Popup x:Name="Popup">
<Border x:Name="PopupBorder"
Background="{ThemeResource ComboBoxDropDownBackground}"
BorderBrush="{ThemeResource ComboBoxDropDownBorderBrush}"
BorderThickness="{ThemeResource ComboBoxDropdownBorderThickness}"
这是来自控制器的相关行(PageController.php):
/**
* @ORM\ManyToOne(targetEntity="Project", inversedBy="pages")
* @ORM\JoinColumn(name="project_id", referencedColumnName="ID")
*/
protected $project;
同样,这完全可以使用app_dev.php(即开发模式),但使用app.php(即prod模式)我不断获得“无法识别的字段”异常。是什么给了什么?
更新:我向同一个实体添加了一个“权重”整数字段,并且该字段在$pages = $this->getDoctrine()->getRepository('JCScopingBundle:Page')->findBy(['project' => null]);
模式下也无法识别。这意味着我无法使用prod
模式,这意味着我无法将更改上传到远程服务器。真的在这里泡菜...
答案 0 :(得分:0)
在我的情况下,我忘了重新启动'memcached'服务。
检查metadata_cache_driver
类型。就我而言:
doctrine:
orm:
metadata_cache_driver:
type: memcached
host: localhost
port: 11211
instance_class: Memcached
由于先前的元数据已缓存,因此在应用迁移后,doctrine会使用旧的缓存元数据,而不知道添加的新字段。
答案 1 :(得分:0)
嗯,低,看,重启Apache服务解决了这个问题。显然,这是真正清除APCu元数据缓存的唯一方法。基于这个问题/答案,我受到启发,尝试这个:Doctrine mapped field is not working