EC-CUBE:メーカーに属する商品数カウントはいつ更新されているのか?

EC-CUBEで商品登録を行う方法としては、主に以下の3つが考えられます。

  • 管理画面の「商品登録」から行う
  • CSVインポートで行う
  • 直接データベースにデータ登録する

その際、商品を所属させるメーカーIDを入力しますが、メーカーごとの総カウント数を記録しているのが「dtb_maker_count」データベーステーブルです。

フィールド名 説明
maker_id メーカーID
product_count 所属する商品の数
create_date 最終更新日

これがどのような役割を担っているかというと、メニューにメーカーリストを表示する際に、属する商品がないカテゴリを表示させないようにしたり、検索フォームブロックで絞り込み用のブランドリストに出さないといった部分で活用されています。

どのコードでアップデートできるのか?

これは非常にシンプルにできていて、SC_Helper_DB_ExクラスとSC_Query_Exクラスのインスタンを活用します。

$objDb = new SC_Helper_DB_Ex();
$objQuery =& SC_Query_Ex::getSingletonInstance();
$objDb->sfCountMaker($objQuery);

余談ですが、カテゴリに所属する商品数は「$objDb->sfCountCategory($objQuery);」で更新できます。

いつ、アップデートされているのか?

このカウント数がいつアップデートされているのかというと、以下の3つのタイミングです。

  • 管理画面で商品の編集を完了した時。
  • 管理画面で商品を削除した時。
  • CSVで商品データをインポートした時。

この中の1番目の「商品編集の完了時」があるおかげで、直接データベースに商品を登録した際でも、管理画面にログインしていずれかの商品を選んで編集完了作業を行えば、最新のカウント数が更新されるようになっています。

最初はどうやって自動更新されているのか? cronか何かが裏で動いているのかな?と思っていましたが、こういうカラクリがあったわけですね。

コメントを残す

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

2013-07-11