仕事で管理しているEC-CUBE(3系)で作られたサイトで、注文情報に「注文前に表示していた出荷日情報」を追加することになったので、その時おこなった手順をまとめておく。
コンテンツ
dtb_orderテーブルにカラムを追加
まず、注文情報を管理するdtb_orderテーブルにカラム(今回はshowed_shippingというカラム名)を追加する。
データ型はDateとした。
Entityファイルの更新(プロパティとゲッター・セッターの追加)
注文情報を管理するエンティティファイルsrc/Eccube/Entity/Order.phpに新規プロパティと、関連するゲッター、セッターを追加する。
// 以下を追加
private $showed_shipping;
public function setShowedShipping($showed_shipping) 
{ 
    $this->showed_shipping = $showed_shipping; 
    return $this; 
} 
public function getShowedShipping() 
{ 
    return $this->showed_shipping; 
}
FormTypeに新規項目を追加
Formの項目を管理するファイルsrc/Eccube/Form/Type/ShoppingType.phpに新たに項目を追加する。
/** 
 * {@inheritdoc} 
 */ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $payments = $options['payments']; 
    $payment = $options['payment']; 
    $message = $options['message']; 
    $builder 
        // ...省略
        // 以下を追加
        ->add('showed_shipping', 'text', array( 
            'required' => false, 
            'data' => '', 
        )); 
}
ShoppingServiceファイルの更新
備考欄のように注文内容確認画面に入力欄を設ける場合は、src/Eccube/Service/ShoppingService.phpファイルのsetFormDataメソッドでプロパティのセッターを実行するようにする。
/** 
 * フォームデータを更新 
 * 
 * @param Order $Order 
 * @param array $data 
 */ 
public function setFormData(Order $Order, array $data) 
{ 
    // お問い合わせ 
    $Order->setMessage($data['message']);
    // お届け先情報を更新 
    $shippings = $data['shippings']; 
    foreach ($shippings as $Shipping) { 
        $deliveryTime = $Shipping->getDeliveryTime(); 
        if (!empty($deliveryTime)) { 
            $Shipping->setShippingDeliveryTime($deliveryTime->getDeliveryTime()); 
        } 
    } 
     
    // 以下を追加
    $Order->setShowedShipping($data['showed_shipping']); 
}
注文内容確認画面に追加項目を表示
今回は前もって設定した出荷日情報をhidden値として送信したかったので、テンプレート側Shopping/index.twigで以下のように出力させるようにした。
{# 注文確定時に表示されていた出荷日情報 #}
{{ form_widget(form.showed_shipping, {'attr': {'id': 'showed_shipping'}, 'type': 'hidden'}) }}
追加したカラムに書き込むための設定
最後にsrc/Eccube/Resource/doctrine/Eccube.Entity.Order.dcm.ymlへ、追加したカラムへデータを書き込むための設定を追加する。
    // 以下を追加
    fields:
        showed_shipping: 
            type: datetime 
            nullable: true
これでdtb_orderテーブルへ追加した項目に値を書き込めるようになる。
