合并两个代码以获取数据

时间:2017-11-14 17:33:03

标签: php magento attributes

我试图从我的商店中提取客户数据,我有一个完全符合我需要的代码,除了一些属性的值为文本,所以它返回0.即使有文本值, magento为属性分配一个数值,我知道从这个属性中获取该数字的位置,我如何获得每个客户端的这个属性值?

在此代码中,我获取具有文本值

的属性的数值
$config    = Mage::getModel('eav/config');

$attribute = $config->getAttribute('customer_address', 'esmart_address_type');
$values    = $attribute->getSource()->getAllOptions();
print_r($values);

//here is another method
$options = Mage::getResourceModel('eav/entity_attribute_option_collection');
$values  = $options->setAttributeFilter($attribute->getId())->toOptionArray();
print_r($values);

返回

[1] => Array
    (
        [value] => 8993
        [label] => Residencial
    )

[2] => Array
    (
        [value] => 8994
        [label] => Comercial
    )

从另一方面来看,我如何得到客户的数据,我做了一个重复循环来接收所有客户,但是我解释了带有文本值的属性为0 ,我需要带上上面代码中的数值,我将在当前实现上面的代码将所有数据组合在一起吗?

ini_set("display_errors", 1);
ini_set('memory_limit','1024M');
require_once('app/Mage.php');
Mage::app(0);


$users = Mage::getModel('customer/address')->getCollection();

$i = 1;
foreach ($users as $key => $user) {
    $id = $user->getId();

    $usuario_loaded = Mage::getModel('customer/address')->load($id);

    $tudo = array('id'=>addslashes($usuario_loaded->getId()), 'endereço_id'=>addslashes($usuario_loaded->getId()), 'smsmessagex'=>addslashes($usuario_loaded->getEsmartFlSmsMessage()), 'smsmessagexx'=>addslashes($usuario_loaded->getEsmartFlSmsConfirmation()), 'prefixo'=>addslashes($usuario_loaded->getPrefix()), 'nome'=>addslashes($usuario_loaded->getFirstname()), 'relaçao'=>addslashes($usuario_loaded->getEsmartRelationship()), 'ocasiao'=>addslashes($usuario_loaded->getEsmartOccasion()), 'tipoend'=>addslashes($usuario_loaded->getEsmartAddressType()));

    var_dump($tudo);
}

我可以使用'example'=>addslashes($user_loaded-> getExample())显示所有字段,但使用文字值创建的字段会为我带来0''

我拉什么

'tipoend'=>addslashes($username_loaded->getEsmartAddressType())

array (1) {
  ["tipoend"] =>
  string (1) "0"
}

我想拉什么 只有使用getEsmartAddressType我没有得到我需要的这个值,如何在第一个代码中得到值8993?我需要得到每个客户(7万)。

'tipoend'=>addslashes($username_loaded->getEsmartAddressType())

array (1) {
  ["tipoend"] =>
  string (1) "8993"
}

1 个答案:

答案 0 :(得分:0)

$model->getResource()->getAttribute('attribute_code')->getFrontendLabel();

$model->getAttributeText('attribute_code');

您的示例

'tipoend'=>addslashes($username_loaded->getAttributeText('esmart_address_type'))

<强>更新

此行也是错误的(您无法加载具有用户ID的地址)

$usuario_loaded = Mage::getModel('customer/address')->load($id);

因为地址实体有自己的ID