Php 以编程方式删除核心url重写条目
我需要为3个商店中的30个URL添加重定向。为此,我创建了一个脚本,使用它我可以添加URL,但是脚本的问题是,如果请求路径已经存在,我必须删除条目并插入新条目。我使用了下面的代码,它不会删除已经存在的条目(对于这个条目,is_system=>1)。谁能帮我解决这个问题Php 以编程方式删除核心url重写条目,php,mysql,magento,Php,Mysql,Magento,我需要为3个商店中的30个URL添加重定向。为此,我创建了一个脚本,使用它我可以添加URL,但是脚本的问题是,如果请求路径已经存在,我必须删除条目并插入新条目。我使用了下面的代码,它不会删除已经存在的条目(对于这个条目,is_system=>1)。谁能帮我解决这个问题 $rewrite_collection = Mage::getModel('core/url_rewrite')->getCollection(); $rewrite_collection->addFieldToFil
$rewrite_collection = Mage::getModel('core/url_rewrite')->getCollection();
$rewrite_collection->addFieldToFilter('request_path', array('eq' =>
$request_path));
$rewrite_collection->addFieldToFilter('store_id', array('eq' => 1));
$rewrite_collection_count = $rewrite_collection->count();
if($rewrite_collection_count < 0){
foreach ($rewrite_collection->getItems() as $rewrite){
$rewrite->delete();
}
}
Mage::getModel('core/url_rewrite')
->setStoreId(1)
->setIsSystem(0)
->setOptions('RP')
->setIdPath($id_path)
->setRequestPath($request_path)
->setTargetPath($target_path)
->save();
$rewrite_-collection=Mage::getModel('core/url_-rewrite')->getCollection();
$rewrite\u collection->addFieldToFilter('request\u path',array('eq'=>
$request_path);
$rewrite_collection->addFieldToFilter('store_id',array('eq'=>1));
$rewrite_collection_count=$rewrite_collection->count();
if($rewrite\u collection\u count<0){
foreach($rewrite\u collection->getItems()作为$rewrite){
$rewrite->delete();
}
}
Mage::getModel('core/url\u rewrite')
->设置存储ID(1)
->setIsSystem(0)
->设置选项('RP')
->setIdPath($id\u路径)
->setRequestPath($request\u path)
->setTargetPath($target\u path)
->save();
请允许我将一些ineteresting元素带到已接受的答案中,您可以将其用于将来的所有删除/保存操作:
这允许您删除/保存您提供给要在一个SQL事务中保存/删除的事务对象的所有对象,并在发生错误时回滚它(如果在保存其中一个模型期间引发异常,则自动完成)
此外,试着养成这样称呼你的收藏的习惯:
而不是:
少走几步
if($rewrite_collection_count < 0){
if($rewrite_collection_count > 0){
foreach ($rewrite_collection->getItems() as $rewrite){
$rewrite->delete();
}
}
$transaction = Mage::getResourceModel('core/transaction');
foreach ($rewrite_collection->getItems() as $rewrite){
$transaction->addObject($rewrite);
}
$transaction->delete(); //or $transaction->save() when you need
$rewrite_collection = Mage::getResourceModel('core/url_rewrite_collection');
$rewrite_collection = Mage::getModel('core/url_rewrite')->getCollection();