バージョン:EC-CUBE4.0
初めて触れるものは、わからない事だらけですね。
何度も探すのはナンセンスなので、メモしておきます。
書籍も買いました!
読んだ感想としては、EC-CUBEってものの6割ぐらいはわかるんじゃないかな٩(•̤̀ᵕ•̤́๑)
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が確認できます。
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」です。
コメント