有没有办法在使用直接SQL的脚本中转换使用magento模型和集合的脚本。
我知道这很可能是一切:),问题是一个简单直观的方法,让我从我的脚本中获取查询,然后在直接的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方法会更快但需要我研究数据库结构。
因此,如果任何人有一个很好的方法来转换它在PHP / SQL脚本中会很棒(更多的东西只打印集合查询)
答案 0 :(得分:0)
如果您只需要一个简单的一次性解决方案来查看查询内容,您应该能够执行echo $collection->getSelect();
之类的操作。集合上的getSelect
函数将返回Zend_Select
个对象。该类有一个__toString
函数,它返回当前构建的查询的sql。