各バージョンごとのdecimalタイプの設定内容

テーブルの定義ファイルを見てみると、price02やtaxなど金額関係のカラムにはdecimal型が使われていることが分かります。

3系の場合、ProductClass.dcm.ymlに下記のように記載があります。

        price02:
            type: decimal
            nullable: false
            precision: 10
            scale: 0

4系ではEntity(ProductClass.php)に直接アノテーションとして記載されています。

        /**
         * @var string
         *
         * @ORM\Column(name="price02", type="decimal", precision=12, scale=2)
         */
        private $price02;

他のカラムの定義には見かけないprecisionとscaleという設定がありますね。

precisionとscaleとは?

簡単にいうとprecisionとは全体の桁数、scaleとは小数点以下の桁数を表します。
price02の例では全体で最大1o桁、小数点以下は0桁ということになります。

MySQLの場合でいうと、DECIMAL(3,2) というカラムを定義したい場合、precisionが5、scaleが2となります。

参考:https://stackoverflow.com/questions/14940574/what-do-scale-and-precision-mean-when-specifying-a-decimal-field-type-in-doctrin

おわりに

decimalは金額の計算が必要な場合に使用されますので、EC-CUBEに必須の型と言えるかと思います。ぜひdecimalのprecisionとscaleをご利用になってください。

ECCUBE制作トップへ

EC-CUBEカスタマイズに関するお問い合わせはこちら

    脆弱性修正