EC-CUBEのデータベースを操作する方法

Pocket

EC-CUBEのデータベースを操作する方法

EC-CUBEのデータベースにアクセスするには?

EC-CUBEのデータベースにアクセスするには、SC_Queryクラスを利用します。

$objQuery =& SC_Query_Ex::getSingletonInstance();

このクラスにはGroupByやWhereなどのSQL文をセットできるメソッドがあり、これらを使用して必要なデータを取得していきます。

例えばおすすめ商品のリストを取得する方法はこのようになります。

public function getRecommendList()
{
    $objQuery =& SC_Query_Ex::getSingletonInstance();

    // SQLのセット
    $col = '*';
    $where = 'del_flg = 0';
    $table = 'dtb_best_products';
    $objQuery->setOrder('rank');

    // SQLの実行
    $arrRet = $objQuery->select($col, $table, $where);

    return $arrRet;
}

まず最初にクラスをインスタンス化。そのあとselect()に渡すテーブルやカラムの情報をセットし、SQLを実行。基本的にはこれだけでOK。

上記のようなおすすめ商品取得など、よく使用するものはSC_Helperクラスですでに定義されている場合があるのでそちらを利用するのが手っ取り早い方法です。

おすすめ商品に関するメソッドは、SC_Helper_BestProductsで一連の操作が定義されています。デフォルトにはない新商品の取得や売上ランキングなどもおすすめ商品のメソッドを少し修正することで実装できます。

SQL文の設定方法

基本的なデータ取得方法は上で紹介した通りですが、実際にはもっと複雑なSQL文を記述することになるとおもいます。

例えば異なるテーブルでproduct_idが同じものを集計して日付順に表示したい場合、どんなSQL文を作ればいいのでしょうか?そんなときにあると便利なのがリファレンス本。入門書とは異なり、やりたいことで検索できるので答えがすぐに見つかります。

EC-CUBEで使用するMySQLやPostgleSQLの場合は以下の書籍がおすすめ。最近出版されたものなので、新しいバージョンにも対応しています。