我有一个关于Symfony2的项目。我应该说,我不会以任何方式认为自己是Symfony2的主人。你可以说我是新手。
我的实体通过YAML绑定到数据库,并且在不受注释约束的php中创建了Entity类。
我有一个实体喜欢这个:
Project/CoreBundle/Resources/config/doctrine/Card.orm.yml
Project/CoreBundle/Entity/Card.php
卡片 - 是一个仪表板元素,可以拖动以方便用户使用。
相应的Card.orm.yml和Card.php具有与db中的表对应的结构。我创建了这段代码,工作得很好。
问题:现在我尝试向表,orm和Entity添加更多字段,它们没有被Symfony2 / Doctrine2查询选中(我已经在调试器中查找了它,甚至在查询中都没有字段是SELECTed)。
更多的是,我尝试添加任何字段,它不会被绑定。在检索到的对象中,它始终为NULL。我查找了这个实体的MAPPING,这个字段正在映射。但在选择查询中,它再次不存在。我使用过明确的缓存机制,但是没有用。我已经从orm和entity删除了OTHER字段 - Doctrine2会抛出异常,但是当我删除这个字段(它仍然存在于表中)并且工作相同时,只返回null。
这有什么作用:
$queryBuilder
->select(array('card','card.isSpecialCard'))
" isSpecialCard"字段是不受约束的字段,因此我必须自定义选择它,然后通过select加载它。此外,它被加载到另一个级别的阵列中,在对象卡的旁边而不是在对象中,尽管对象仍然具有该字段并且它具有值,如果它被选择。
我正在使用Symfony 2.1。
答案 0 :(得分:1)
您不应手动进行更改,而是让ORM驱动程序为您执行此操作。使用这两个命令相应地更新实体和数据库:
php app/console doctrine:generate:entities Namespace:Card
php app/console doctrine:schema:update --force