我将doctrine与symfony结合使用。对于数据库设置,我将使用注解。我成功创建了一个表,但为字段city
提供了错误的格式integer
,我需要将其更改为string
。我的理解是,当我将customers类中的注解从
class Customer{
/**
* @ORM\Column(type="integer", nullable=true)
* @var string city
*/
private $city;
}
至
class Customer{
/**
* @ORM\Column(nullable=true)
* @var string city
*/
private $city;
}
然后运行
php bin/console doctrine:migrations:diff
应该识别Map的所有更改,并且应该生成一个包含ALTER TABLE查询或类似查询的php文件。2然而,此命令的回复是**“No changes detected in your mapping information”**。3我遗漏了什么?
9条答案
按热度按时间dauxcl2d1#
我需要先清除该高速缓存
成功啦!
ztigrdn82#
您应该将注解
@Entity
添加到实体中,以便在教义ORM中将其识别为实体。您也可以使用此指令自动产生具有不同必要注解的图元:
stszievb3#
当Map无效时也可能发生这种情况。
快速解决方法是
php bin/console doctrine:schema:validate
然后修复错误,直到您看到
[OK] The mapping files are correct.
现在再次生成
php bin/console doctrine:migrations:diff
,它应该可以工作。tyu7yeag4#
在我的例子中,我必须添加--from-empty-schema标志。
piztneat5#
如果你正在使用一个复杂的Symfony配置,检查
config.yml
中的doctrine.orm.entity_managers.default.mappings
配置值。当它不工作时,你可能需要在这里添加你的新包。jtjikinw6#
如果它可以帮助其他人,对我来说,这只是一个错误的命名空间设置在我的实体类的问题。
我从另一个包中复制了一个实体,但忘记更新名称空间。
eyh26e7m7#
我的问题是,我已经把我的实体放在bundle Doctrine文件夹,但必须把它放在实体文件夹。
2o7dmzc58#
类似于@agoldev,我需要清除该高速缓存。只是不是教义元数据缓存,而是symfony缓存。但他引导我找到了这个解决方案。
然后就成功了。
xmd2e60i9#
在我的例子中,我在doctride配置文件中有Map类型'attribute',但是实体有注解。