カテゴリー
EC-CUBE

【EC-CUBE4】メモ

バージョン:EC-CUBE4.0

初めて触れるものは、わからない事だらけですね。

何度も探すのはナンセンスなので、メモしておきます。

書籍も買いました!

読んだ感想としては、EC-CUBEってものの6割ぐらいはわかるんじゃないかな٩(•̤̀ᵕ•̤́๑)

https://amzn.to/3ierEXx

EC-CUBE4の設定関連はこちらにまとめています↓↓↓

【EC-CUBE4】設定

デフォルト設定

envファイル見れば良いのですが、一応記載

管理画面URL

http://プロジェクト名/admin
ログインID:admin
パスワード:password

SQL初期設定

mysql, postgresql
ユーザー名:dbuser
パスワード:secret
データベース名:eccubedb

クラス構成

Controller:ルーティング・サービス・モデル・ビューとのやりとり

Entity:SQLのテーブルをPHPにしたクラス
    ゲッターセッター
    アノテーションでいろいろ出来る

Repository:SQLを組んでリスト取得や表示順変更など行う

Service:注文や消費税など複数箇所で使用したり特定の機能として独立しているクラス

デバック方法

これ知らないと開発できませんね!

var_dump

devモードならdumpだけで、綺麗に整形してくれます。

dump($array);

実行クエリ確認

どんなSQLを投げたのか確認したい事ありますよね!

dump($qb->getQuery()->getSQL());
exit;

こんな感じで確認できます٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ

パラメータはないから、dumpで別途確認して下さい。

Doctrineのdump

パラメータを当て込んだSQLが確認できます。

PHP
    public function checkSql($qb) {

        $replaceTargets = [];
        foreach ($qb->getQuery()->getParameters()->toArray() as $key => $parameters) {
    
            $value = $parameters->getValue();
    
            $replaceTarget = '';
            if (is_array($value)) {
                $n = [];
                foreach ($value as $row) {
                    // exit;
                    if (is_array($row)) {
                        // array[1]で渡すパラメータ対応
                        $n[] = "'".$row[1]."'";
                    } elseif (is_object($row)) {
                        // オブジェクト指定はID、違う場合は変更する
                        $n[] = "'".$row->getId()."'";
                    } else {
                        $n[] = "'".$row."'";
                    }
                }
                $replaceTarget = implode(',', $n);
            } elseif (is_object($value)) {
                $replaceTarget = "'".$value->getId()."'";
            } else {
                $replaceTarget = "'".$value."'";
            }
            $replaceTargets[] = $replaceTarget;
        }
    
        $replace = vsprintf(str_replace('?', '%s', $qb->getQuery()->getSQL()), $replaceTargets);
    
        dump($replace);
    exit;
    }

Entity&Repositoryの確認

Controllerであれば「entityManager」は、親クラスで定義済み

$orderRepository = $this->entityManager->getRepository('Eccube\Entity\Order'); 
$order = $orderRepository->findAll();
dump($order); 

別途定義が必要な場合は、下記コードで使用する

use Doctrine\ORM\EntityManagerInterface;

Docker

今回は初めてDockerで、環境構築

開発環境構築途中でエラー

こちらのコマンド実行後にエラー

docker-compose up -d

エラー内容

Unknown SSL protocol error in connection to XXX

ウィルス対策ソフトのカスペルスキー入れているのですが、、、それ?
macを再起動してすぐにコマンド実行したら解決しました٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 6291464 bytes) in /var/www/html/vendor/easycorp/easy-log-handler/src/EasyLogFormatter.php on line 84

docker-compose exec eccube composer run-script compile

メモリ不足で発生します。

php.iniファイルでメモリを増やせばOK

Dockerはコンテナで設定

cd /usr/local/etc/php/
vi php.ini
memory_limit = 128M
↓
memory_limit = 512M

SQLへ初期データの登録

初期データは、EC-CUBEが用意しているデモ用の最低限のデータ

# スキーマ作成+初期データ投入
docker-compose exec ec-cube composer run-script compile

途中で初期化したくなったら

eccubeのサンプルデータも入ってます。

データベース削除:eccubedb デフォルト

データベース作成:CREATE DATABES eccubedb;

あとはさっきのコマンド流せば完了

# スキーマ作成+初期データ投入
docker-compose exec ec-cube composer run-script compile

Workbenchで接続

情報はenvファイルにあります。

 DATABASE_URL=mysql://dbuser:secret@mysql/eccubedb

Hostnameとport番号は、Dockerから確認しました。

パスワードは、「secret」です。

作成者: kenshi

ゲーム大好きです。
ApexLegends, Arkやっています。
携帯販売員4年(240万)

プログラマー3年(350万)

フリーランスエンジニア1年(500万)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です