2017-11-14 3 views
1

고객 데이터를 저장소에서 가져 오려고합니다. 일부 속성에 값을 텍스트로 사용한다는 점을 제외하고는 필요한 코드를 가지고 있으므로 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" 
} 

답변

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

또는

$model->getAttributeText('attribute_code'); 

귀하의 예를

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

UPDATE이

주소 엔티티

내가 레이블의 이름을 가지고
+0

, 내가 그 안에 값을 필요로 자신의 ID를 가지고 있기 때문에 선이 (당신이 사용자 ID와 주소를로드 할 수 없습니다)

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

잘못된 것입니다. –

+0

당신은 옵션 ID와 값이 모두 필요하다는 것을 의미합니까? 나는 getAttributeText와 getData()를 둘 다 사용한다. –

+0

문제는 고객 ID에서이 데이터를 가져와야한다는 것입니다. 왜냐하면 내가 표시 한 정보가 새 은행에 추가 될 수 있어야하므로이 데이터를 복구 할 수 없다는 것입니다. 이런 식으로 –

관련 문제