次のようなカスタムタイプを追加しました:
namespace My\SuperBundle\Types;
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Platforms\AbstractPlatform;
class Money extends Type
{
const MONEY = 'money';
public function getSqlDeclaration(
array $fieldDeclaration,
AbstractPlatform $platform
) {
return 'DECIMAL(10,2)';
}
public function getName()
{
return self::MONEY;
}
}
そして、私のアプリケーションの起動で:
namespace My\SuperBundle;
use Doctrine\DBAL\Types\Type;
use My\SuperBundle\Types\Money;
class MyBSuperBundle extends Bundle
{
public function boot()
{
//add custom quantity and wight types
$em = $this->container->get('doctrine.orm.entity_manager');
if(!Type::hasType(Money::MONEY)) {
Type::addType(Money::MONEY, 'My\SuperBundle\Types\Money');
}
}
}
ただし、データベースを次のように更新するたびに:
php app/console doctrine:schema:update --dump-sql
私は次のことを続けています:
ALTER TABLE product_price CHANGE price price DECIMAL(10,2) DEFAULT NULL
それを除けば、すべてが非常にうまく機能します。DB のフィールドは正しいです。doctrine が同じデータで更新し続ける理由はありますか?