Mol*_*rro 5 symfony doctrine-orm doctrine-migrations
我使用Symfony 2.7,教义/ orm 2.5和教义捆绑1.5。在Cargo实体中,我有财产price:
/**
* @var float
*
* @ORM\Column(name="price", type="float", options={"unsigned":true, "default":0})
*/
protected $price;
Run Code Online (Sandbox Code Playgroud)
在每个学说迁移课程中,我都有:
$this->addSql('ALTER TABLE cargo CHANGE price price DOUBLE PRECISION DEFAULT \'0\' NOT NULL');
Run Code Online (Sandbox Code Playgroud)
尽管如此,之前已经执行了迁移,并且已经设置了价格的默认值。为什么会发生这种情况以及如何解决?还是最好直接将默认值设置为property?根据Doctrine文档,两个选项均可用:
这是因为您的数据库将0默认值转换为0.00. 当\Doctrine\DBAL\Schema\Comparator::compareTables尝试将当前模式与预期模式进行比较时 - 发现这些列声明不相同:
NUMERIC(10, 2) DEFAULT '0.00' NOT NULLvs NUMERIC(10, 2) DEFAULT '0' NOT NULL(from \Doctrine\DBAL\Platforms\AbstractPlatform::columnsEqual)
所以解决方案是在默认值中使用与数据库相同的格式 -options={"unsigned":true, "default":"0.00"})
| 归档时间: |
|
| 查看次数: |
571 次 |
| 最近记录: |