Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
Php Symfony2 YAML实体字段未绑定_Php_Symfony_Doctrine - Fatal编程技术网

Php Symfony2 YAML实体字段未绑定

Php Symfony2 YAML实体字段未绑定,php,symfony,doctrine,Php,Symfony,Doctrine,我有一个关于Symfony2的项目。我应该说我不认为自己是SimoFyy2的大师。你可以说我是个新手 我的实体通过YAML绑定到数据库,实体类是在php中创建的,不受注释绑定 我有这样一个实体: Project/CoreBundle/Resources/config/doctrine/Card.orm.yml Project/CoreBundle/Entity/Card.php 卡片-是一个仪表板元素,可以拖动以方便用户 相应的Card.orm.yml和Card.php具有与数据库中的表相对

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

我的实体通过YAML绑定到数据库,实体类是在php中创建的,不受注释绑定

我有这样一个实体:

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

Project/CoreBundle/Entity/Card.php
卡片-是一个仪表板元素,可以拖动以方便用户

相应的Card.orm.yml和Card.php具有与数据库中的表相对应的结构。我创建了这段代码,工作得很好

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

更重要的是,我尝试添加任何字段,但它不会被绑定。在检索到的对象中,它始终为空。我已经查找了这个实体的映射,这个字段正在被映射。但在select查询中,它同样不存在。我使用了清晰的缓存机制,但这样做不起作用。我已经从orm和entity中删除了其他字段-Doctrine2抛出异常,但当我删除这个字段(它仍然存在于表中)并使用相同的方法时,只返回null

有效的方法是:

$queryBuilder
        ->select(array('card','card.isSpecialCard'))
“isSpecialCard”字段是不绑定选择的字段,所以我必须从表中自定义选择它,然后通过选择加载它。此外,它被加载到另一个级别的数组中,紧挨着卡的对象,而不是对象中的对象,尽管对象仍然有该字段,并且它有值,就好像它被选中一样


我正在使用Symfony 2.1。

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

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

您是否尝试过使用php应用程序/控制台原则:generate:entities命名空间:Card php应用程序/控制台原则:schema:update--force还有,如果您的实体结构有.orm.yml文件,为什么您说它不受注释的约束。不应该有任何注释“为什么你说它不受注释约束。”=>“不应该有任何注释”。这正是为什么我说:)好吧,我读了它,因为你们两个都设置好了。通常在修改实体ORM文件后,我使用上述命令检查生成的代码是否符合我的需要,然后更新模式。一切都很好。好吧,谢谢你,我不知道它改变了什么-yaml和Card.php是一样的,但现在它工作了。我使用这个-php应用程序/控制台原则:generate:entities Namespace:Card来生成实体。我很惭愧,我以前没试过。写一个真实的答案,我会代表你。我不知道为什么,但在手动构建实体时出现了一些小故障。YAML文件和Entity类在Entity generator中看起来完全相同,但现在所有内容都按原样绑定。如果有人能够扩展Symfony2\doctrine2生成实体的知识,这将非常有用。我的意思是,除了yaml和实体,它还能产生什么?为什么它不同于手动创建实体。