バージョン選択

フォーラム

メニュー

オンライン状況

60 人のユーザが現在オンラインです。 (47 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 60
もっと...

サイト内検索

質問 > その他 > ENUM型マッピング

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ma33
投稿日時: 2019/6/27 10:18
対応状況: −−−
新米
登録日: 2018/12/11
居住地:
投稿: 2
ENUM型マッピング
[EC-CUBE] 4.0.0
[レンタルサーバ] VPS
[OS] CentOS 7.6
[PHP] PHP 7.2.19
[データベース] MariaDB 10.3.15
[WEBサーバ] Apache/2.4.6
[ブラウザ] Firefox 67.0.4
[導入プラグインの有無] 無
[カスタマイズの有無]] .env にて APP_ENV=dev APP_DEBUG=1 設定
[現象]
EC-CUBE2.12からEC-CUBE4へバージョンアップ予定です。
まず最初にEC-CUBE4のインストールをおこない各設定をおこないトップページの表示など確認済です。
次に旧EC-CUBE(2.12)で追加したテーブルをDBに登録しました。
そしてトップページを表示しようとしところ以下のエラーが表示されます。(ログ加工してます)
====
Whoops, looks like something went wrong.
(1/1) DBALException

Unknown database type enum requested, Doctrine\DBAL\Platforms\MariaDb1027Platform may not support it.
in AbstractPlatform.php line 479
at AbstractPlatform->getDoctrineTypeMapping('enum')in MySqlSchemaManager.php line 135
at MySqlSchemaManager->_getPortableTableColumnDefinition(array('field' => 'customer_category_id', 'type' => 'enum(\'1\',\'2\',\'3\')', 'null' => 'YES', 'key' => '', 'default' => '\'1\'', 'extra' => '', 'comment' => '***', 'characterset' => 'utf8', 'collation' => 'utf8_general_ci', 'name' => ''))in AbstractSchemaManager.php line 831
at AbstractSchemaManager->_getPortableTableColumnList('dtb_customer_ext', *****)in AbstractSchemaManager.php line 186
====

ENUM型がdoctrine?でサポートされてないからだと思うのです。
検索するとenum型をstringにマッピングすれば良い等の情報を得られます。
====
https://yshrfmru.hatenablog.com/entry/2019/01/06/191235 より引用
DB::getDoctrineSchemaManager()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
====
EC-CUBE4では具体的にどこに記述してよいか分からず悩んでおります。
ENUM型のマッピングについてご教授いただけると嬉しいです。
よろしくお願いします。
kishikawa
投稿日時: 2019/6/28 13:26
対応状況: −−−
一人前
登録日: 2018/12/20
居住地: 松戸
投稿: 89
Re: ENUM型マッピング
https://github.com/EC-CUBE/ec-cube/blob/4.0/src/Eccube/Doctrine/EventSubscriber/InitSubscriber.php

このあたり、なんですかね・・・。
DBに対する共通処理がこのへんのディレクトリにありそうです。
ma33
投稿日時: 2019/7/1 16:58
対応状況: −−−
新米
登録日: 2018/12/11
居住地:
投稿: 2
Re: ENUM型マッピング
kishikawaさん、回答ありがとうございます。

ご指摘いただいた点でもう少し調べてみます。

a-zumi
投稿日時: 2019/7/5 18:41
対応状況: −−−
半人前
登録日: 2017/4/20
居住地:
投稿: 24
Re: ENUM型マッピング
動作確認していませんが以下でどうでしょう?


<?php
namespace Customize\Doctrine\EventSubscriber;


use Doctrine\Common\EventSubscriber;
use Doctrine\DBAL\Event\ConnectionEventArgs;
use Doctrine\DBAL\Events;

class DoctrineDbalSubscriber implements EventSubscriber
{

    /**
     * Returns an array of events this subscriber wants to listen to.
     *
     * @return string[]
     */
    public function getSubscribedEvents()
    {
        return [
            Events::postConnect
        ];
    }

    public function postConnect(ConnectionEventArgs $eventArgs)
    {
        $db = $eventArgs->getConnection();
        $db->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
    }
}


----------------
あずみ.net
http://a-zumi.net

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,282名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.