Symfony2 YAML 实体字段未绑定

2022-01-16 00:00:00 php symfony doctrine

我有一个关于 Symfony2 的项目.我应该说我不认为自己是 Symfony2 的大师.你可以说我是新手.

I have a project on Symfony2. I should say that I don't consider myself a master of Symfony2 in any way. You could say I'm a newbie.

我的实体通过 YAML 绑定到数据库,并且在 php 中创建了一个不受注释绑定的实体类.

My entities are bound via YAML to database and an Entity class is created in php not bound by annotations.

我有一个这样的实体:

Project/CoreBundle/Resources/config/doctrine/Card.orm.yml

Project/CoreBundle/Entity/Card.php

卡片 - 是一个仪表板元素,可以拖动以方便用户.

Card - is a dashboard element, that can be dragged around for user's convenience.

对应的 Card.orm.yml 和 Card.php 具有对应于 db 中的表的结构.我创建了这段代码并且运行良好.

The corresponding Card.orm.yml and Card.php have structure that correspond to table in db. I created this piece of code and worked fine.

问题:现在我尝试向表、orm 和实体添加更多字段,但 Symfony2/Doctrine2 查询没有选择它们(我在调试器中查找过它,甚至在查询中都没有找到新字段是已选中).

The Problem: now that I try to add more fields to table, to orm and Entity, they are not being selected by Symfony2/Doctrine2 query (I've looked it up in debugger and not even in query the new field is SELECTed).

更重要的是,我尝试添加任何字段并且它不会被绑定.在检索到的对象中,它始终为 NULL.我查看了这个实体的映射,这个字段正在映射.但是在选择查询中,它又不存在.我使用了清晰的缓存机制等 - 没有用.我已经从 orm 和实体中删除了其他字段 - Doctrine2 会引发异常,但是当我删除此字段(它仍然存在于表中)并且工作相同时,只返回 null.

More so, I try to add any field and it doesn't become bound. In retrieved object it is always NULL. I've looked up MAPPING of this entity and this field is BEING MAPPED. But in select query, again, it is not present. I've used clear caching mechanisms and such - didn’t work. I've deleted OTHER fields from orm and entity - Doctrine2 throws exceptions, though when I remove this field (it still being present in table) and works the same, just returns null.

这是有效的:

$queryBuilder
        ->select(array('card','card.isSpecialCard'))

isSpecialCard"字段是未绑定选择的字段,因此我必须从表中自定义选择它,然后通过选择加载它.此外,它被加载到另一个级别的数组中,在卡片对象旁边而不是在对象中,尽管该对象仍然具有该字段并且它具有就像它被选中一样的值.

The "isSpecialCard" field is the one that's not being bound to select, so I have to custom-select it out of table and THEN it's loaded via select. Also, it's being loaded in another level of array, NEXT TO THE OBJECT OF CARD not IN THE OBJECT, though the object still has that field AND IT HAS VALUE AS IF IT WAS SELECTED.

我正在使用 Symfony 2.1.

I am using Symfony 2.1.

推荐答案

您不应该手动进行更改,而是让 ORM 驱动程序为您完成.使用这两个命令相应地更新实体和您的数据库:

You should not make the changes manually, but let the ORM driver do them for you. Use these two commands to update the Entity and your database accordingly:

php app/console doctrine:generate:entities Namespace:Card
php app/console doctrine:schema:update --force

相关文章