0

Magento モデルとコレクションを使用するスクリプトを直接 SQL を使用するスクリプトに変換する方法はありますか。

私はそれが可能であることを知っています:)、質問は、スクリプトからクエリを取得し、直接DBスクリプトで再利用できる簡単で直感的な方法についてです。

なんで ?より高速なスクリプトを作成したいと考えています。

コード例 ?

次のスクリプトを想定します。

function getProd() {

$collection = Mage::getModel('catalog/product')
        ->getCollection()
        ->addTierPriceData();

return $collection;
}
function getTier($prod) {

$t_1 = false;

$_tierPrices = $prod->getTierPrice();

if ($_tierPrices) {

    $_firstTier = array_slice($_tierPrices, 0, 1);

    if (isset($_firstTier[0]))
        $t_1 = $_firstTier[0]['price'];
}

return $t_1;
}

function exec() {

$collection = getProd();

$i = 0;

foreach ($collection as $prod) {

    $class = ($i % 2 == 0) ? '' : 'class="odd"';
    $t1 = 0;
    if ($t1 = getTier($prod)) {

            $prod = mage::getModel('catalog/product')->load($prod->getId());

            $prod->setPrice($t1);
            $prod->save();
            if ($safe)
                set_time_limit(60);
        }
    }
}

exec();

基本的には、ティア価格のある商品をすべて処理し、商品の本体価格をティア価格に置き換えたいと考えています。

スクリプトは 12000 製品で 9 時間以上かかるため、SQL アプローチの方が高速だと思いますが、DB 構造を調べる必要があります。

したがって、PHP/SQLスクリプトでこれを変換する良いアプローチがあれば、それは素晴らしいことです(コレクションクエリのみを出力する何か)

4

1 に答える 1