Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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 Magento 1:从集合中的列数据中删除空格_Php_Mysql_Magento_Magento 1.9 - Fatal编程技术网

Php Magento 1:从集合中的列数据中删除空格

Php Magento 1:从集合中的列数据中删除空格,php,mysql,magento,magento-1.9,Php,Mysql,Magento,Magento 1.9,我正在获取一个产品集合,我想对自定义属性使用like条件,但问题是,在使用like条件时,我想删除自定义属性值中包含的所有空白 我已经试过了 $psku = 'some_sku'; $_product = Mage::getModel('catalog/product')->getCollection(); $_product->addFieldToFilter(str_replace(' ', '', 'simple_skus_map'), arr

我正在获取一个产品集合,我想对自定义属性使用like条件,但问题是,在使用like条件时,我想删除自定义属性值中包含的所有空白

我已经试过了

    $psku = 'some_sku';
    $_product = Mage::getModel('catalog/product')->getCollection();
    $_product->addFieldToFilter(str_replace(' ', '', 'simple_skus_map'), 
    array(array('like' => '%,'.$psku.',%'),
    array('like' => '%,'.$psku),
    array('like' => $psku.',%'),
    array('like' => $psku)
   ));
//简单的SKU映射:(我的自定义属性包含1、2、3、4等数据)。我希望下面的代码应该获取所有的产品,其中simple_SKU_map包含上述任何一个单词(即1/2/3/4)
注意:注意到了吗?我的自定义属性中有空格。

您提供的查询执行速度可能很慢,因为它与通配符一起使用。您可以使用该功能

幸运的是,magento也支持这一点:

$\u product=Mage::getModel('catalog/product')->getCollection();
//修剪空间,“保存到列”修剪\u简单\u SKU\u映射
$\u product->addExpressionAttributeToSelect('trimmed\u simple\u sku\u map'、'REPLACE(sku、\'\'、\'\')、'simple\u sku\u map');
//在修剪集中查找
$\产品->添加字段过滤器('trimmed\ u simple\ u SKU\ u map'[
“finset”=>[$psku]
]
);

您提供的查询执行速度可能很慢,因为它与通配符一起使用。您可以使用该功能

幸运的是,magento也支持这一点:

$\u product=Mage::getModel('catalog/product')->getCollection();
//修剪空间,“保存到列”修剪\u简单\u SKU\u映射
$\u product->addExpressionAttributeToSelect('trimmed\u simple\u sku\u map'、'REPLACE(sku、\'\'、\'\')、'simple\u sku\u map');
//在修剪集中查找
$\产品->添加字段过滤器('trimmed\ u simple\ u SKU\ u map'[
“finset”=>[$psku]
]
);

我有另一个解决方案,使用直接SQL查询。 以下是php代码:

$resource = Mage::getSingleton('core/resource');
    $readConnection = $resource->getConnection('core_read');
    $writeConnection = $resource->getConnection('core_write');

    $q_find_blank = "SELECT *FIELD_NAME* FROM simple_skus_map WHERE *FIELD_NAME* LIKE '% %';  ";
    $results = $readConnection->fetchAll($q_find_blank); //get all field with a blank space

    foreach ($results as $result){ //set all the fields in array and removes the blanks
        $result = explode(' ',$result);
        $no_blanks_fields[] = implode("",$result);
    }

    echo print_r($no_blanks_fields);

    foreach ($no_blanks_fields as $no_blanks_field){ //replace them in the database field
        echo $no_blanks_field . "<br>";
        $q_update = "UPDATE simple_skus_map set *FIELD_NAME* = ".$no_blanks_field." WHERE *condition referencing the right field to his value*";
        $writeConnection->query($q_update);
    }
$resource=Mage::getSingleton('core/resource');
$readConnection=$resource->getConnection('core_read');
$writeConnection=$resource->getConnection('core_write');
$q_find_blank=“从简单的SKU映射中选择*字段名*,其中*字段名*类似“%””;
$results=$readConnection->fetchAll($q\u find\u blank)//使用空格获取所有字段
foreach($results as$result){//设置数组中的所有字段并删除空格
$result=爆炸(“”,$result);
$no_blanks_fields[]=内爆(“,$result”);
}
回声打印(无空白字段);
foreach($no_blanks_字段作为$no_blanks_字段){//在数据库字段中替换它们
echo$no_blanks_字段。“
”; $q_update=“update simple_SKU_map set*FIELD_NAME*=”$no_blanks_FIELD.。其中*将右字段引用到其值的条件*”; $writeConnection->query($q\u update); }
这是简单的,不是很高的性能,但工作。 请记住,在写入数据时,请确保在正确的字段中设置正确的值(您可以使用| field | id |创建临时支持表)

这将从所选字段中删除空格,并将其替换为非空格值(或者,无论您想使用什么方法内爆,只需检查内爆函数)


“testfieldblanks”=>“testfieldsblanks”

我有另一个解决方案,可以直接使用SQL查询。 以下是php代码:

$resource = Mage::getSingleton('core/resource');
    $readConnection = $resource->getConnection('core_read');
    $writeConnection = $resource->getConnection('core_write');

    $q_find_blank = "SELECT *FIELD_NAME* FROM simple_skus_map WHERE *FIELD_NAME* LIKE '% %';  ";
    $results = $readConnection->fetchAll($q_find_blank); //get all field with a blank space

    foreach ($results as $result){ //set all the fields in array and removes the blanks
        $result = explode(' ',$result);
        $no_blanks_fields[] = implode("",$result);
    }

    echo print_r($no_blanks_fields);

    foreach ($no_blanks_fields as $no_blanks_field){ //replace them in the database field
        echo $no_blanks_field . "<br>";
        $q_update = "UPDATE simple_skus_map set *FIELD_NAME* = ".$no_blanks_field." WHERE *condition referencing the right field to his value*";
        $writeConnection->query($q_update);
    }
$resource=Mage::getSingleton('core/resource');
$readConnection=$resource->getConnection('core_read');
$writeConnection=$resource->getConnection('core_write');
$q_find_blank=“从简单的SKU映射中选择*字段名*,其中*字段名*类似“%””;
$results=$readConnection->fetchAll($q\u find\u blank)//使用空格获取所有字段
foreach($results as$result){//设置数组中的所有字段并删除空格
$result=爆炸(“”,$result);
$no_blanks_fields[]=内爆(“,$result”);
}
回声打印(无空白字段);
foreach($no_blanks_字段作为$no_blanks_字段){//在数据库字段中替换它们
echo$no_blanks_字段。“
”; $q_update=“update simple_SKU_map set*FIELD_NAME*=”$no_blanks_FIELD.。其中*将右字段引用到其值的条件*”; $writeConnection->query($q\u update); }
这是简单的,不是很高的性能,但工作。 请记住,在写入数据时,请确保在正确的字段中设置正确的值(您可以使用| field | id |创建临时支持表)

这将从所选字段中删除空格,并将其替换为非空格值(或者,无论您想使用什么方法内爆,只需检查内爆函数)


“test field blanks”=>“testfields blanks”

对于自定义属性,您可以执行以下操作,因此它将从自定义属性值中删除空白,并匹配给定/发布数据

    $_product = Mage::getModel('catalog/product')->getCollection();
    $_product->addExpressionAttributeToSelect('trimmed_simple_skus_map', 
    'REPLACE({{simple_skus_map}},\' \',\'\')','simple_skus_map');
    $_product->addFieldToFilter('trimmed_simple_skus_map', [
    'finset' => [$psku]
        ]
    );

对于自定义属性,您可以执行以下操作,因此它将从自定义属性值中删除空白,并匹配给定的/post数据

    $_product = Mage::getModel('catalog/product')->getCollection();
    $_product->addExpressionAttributeToSelect('trimmed_simple_skus_map', 
    'REPLACE({{simple_skus_map}},\' \',\'\')','simple_skus_map');
    $_product->addFieldToFilter('trimmed_simple_skus_map', [
    'finset' => [$psku]
        ]
    );

你好,Paul,Thanx为了你的帮助,我想过滤我的自定义属性,所以我只是修改了你的代码,并根据需要得到了结果。这是我的代码:$\u product=Mage::getModel('catalog/product')->getCollection()$_product->addExpressionAttributeToSelect('trimmed\u simple\u skus\u map','REPLACE({{simple\u skus\u map}},\'\',\'\''),'simple\u skus\u map')$_product->addFieldToFilter('trimmed_simple_SKU_map',['finset'=>[$psku]]);你好,Paul,Thanx为了你的帮助,我想过滤我的自定义属性,所以我只是修改了你的代码,并根据需要得到了结果。这是我的代码:$\u product=Mage::getModel('catalog/product')->getCollection()$_product->addExpressionAttributeToSelect('trimmed\u simple\u skus\u map','REPLACE({{simple\u skus\u map}},\'\',\'\''),'simple\u skus\u map')$_product->addFieldToFilter('trimmed_simple_SKU_map',['finset'=>[$psku]]);