Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 以编程方式删除核心url重写条目_Php_Mysql_Magento - Fatal编程技术网

Php 以编程方式删除核心url重写条目

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

我需要为3个商店中的30个URL添加重定向。为此,我创建了一个脚本,使用它我可以添加URL,但是脚本的问题是,如果请求路径已经存在,我必须删除条目并插入新条目。我使用了下面的代码,它不会删除已经存在的条目(对于这个条目,is_system=>1)。谁能帮我解决这个问题

$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();