理由あって、EC-CUBEの商品登録処理をハックすることになりました。
別のアプリケーションで生成した商品情報を利用して、EC-CUBEの商品を作成するというものです。
EC-CUBEにはCSVから商品登録する機能もあるのですが、登録後にEC-CUBE側のproduct_id、product_class_idも取得したいので、手間を減らすために登録処理を作っちまおうというわけです。
で、EC-CUBEのソースを読んでみたのですが、商品の登録処理はこんな感じのようです。
商品登録時に更新されるテーブル 商品情報 dtb_products 商品カテゴリ関連 dtb_product_categories 商品ステータス情報 dtb_product_status 商品規格情報 dtb_products_class カテゴリ商品数情報 dtb_category_count カテゴリ商品合計数情報 dtb_cateory_total_count 商品登録の処理 // パラメーター初期化, 取得 ↓LC_Page_Admin_Products_Product.php actionメソッド $this->lfInitFormParam $this->lfGetFormParam_Complete // エラーチェック $this->lfCheckError_Edit // DBへデータ登録 $this->lfRegistProduct // 次のシーケンス(次のID)を取得 $objQuery->nextVal("dtb_products_product_id"); // Insertの実行 // カテゴリを更新 $objDb->updateProductCategories($arrList['category_id'], $product_id); // 商品登録の時は規格を生成する。複製の場合は規格も複製されるのでこの処理は不要。 // 規格登録 // 規格なし商品(商品規格テーブルの更新) $this->lfInsertDummyProductClass($arrList); // 商品ステータス設定 $objProduct = new SC_Product_Ex(); $objProduct->setProductStatus($product_id, $arrList['product_status']); // 件数カウントバッチ実行 $objQuery =& SC_Query_Ex::getSingletonInstance(); $objDb = new SC_Helper_DB_Ex(); $objDb->sfCountCategory($objQuery); $objDb->sfCountMaker($objQuery);
ただ、これ以外にも
dtb_products_class_product_class_id_seq
dtb_products_product_id_seq
のauto_incrementが更新されていたり、
mtb_constantsが追加されたりと、よくわからないところもあるのでMySQLのクエリログを取ってチェックすることにしました。
MySQLのクエリログを保存する
相変わらず前置きが長いですね。ここからが本題です。
MySQLのクエリログを保存するには、
Windows(Xampp)の場合は「C:\xampp\mysql\bin\my.ini」
Linux(さくらVPS、CentOSでMySQLをyumインストール)の場合は、「/etc/my.cnf」
にログの保存先を追加します。
[mysqld]のセクションに追加します。
#Windowsの場合(パスをクォートする必要がある) log="C:\xampp\mysql\data\query.log" #CentOSの場合 log=/var/log/mysql/query.log
その後、MySQLを再起動すればOKです。
ちなみにWindowsの場合は、ログファイルのパスをクォート必要があるようです。