2013-03-02 11 views
6

Ich spare die Kundenadresse in der customer_address_entity Tabelle. Alles ist in Ordnung, aber ich möchte das letzte generierte entity_id bekommen. Kann mir jemand helfen?Wie die zuletzt eingefügten ID in Magento Kundenadresse Modell bekommen

Ich habe den folgenden Code;

 $customAddress = Mage::getModel('customer/address'); 

     $customAddress->setData($_custom_address) 
      ->setCustomerId($customer->getId()) 
      ->setIsDefaultBilling('0') 
      ->setIsDefaultShipping('1') 
      ->setSaveInAddressBook('1'); 

     try { 
      $customAddress->save(); 
     } catch (Exception $ex) { 
       Mage::log("\n Address save Error:: \n" . $ex->getMessage(), null, $this->log_entry_file); 
     } 

Antwort

10

Um die ID zu erhalten, nachdem getId()

... 
try { 
     $customAddress->save(); 
     echo $customAddress->getId(); 
} 
.... 
12

1 Verwendung Sparend - wenn ein Modell, das gibt den zuletzt hinzugefügten/gespeichert Artikel-ID von $ Modellobjekt

$model->getId() 

2 - Wenn Sie jedoch eine benutzerdefinierte Abfrage verwenden, verwenden Sie die folgenden, um die zuletzt eingefügte ID

zu erhalten

3 - Von einer bestimmten Tabelle, erhalten die letzte Eingabe-ID durch eine eigene Funktion

function getLastInsertId($tableName, $primaryKey) 
    { 
    //SELECT MAX(id) FROM table 
    $db = Mage::getModel('core/resource')->getConnection('core_read'); 
    $result = $db->raw_fetchRow("SELECT MAX(`{$primaryKey}`) as LastID FROM `{$tableName}`"); 
    return $result['LastID']; 
    } 
4
If you use magento save method than try this to get the last inssert id. 

$order->save(); 
Afetr save method use getId method to get the last insert id in magento 
echo $order->getId(); 


//For custom connection use 
$db_write = Mage::getSingleton('core/resource')->getConnection('core_write'); 
$sqlQuery = "SELECT * FROM TABLE_NAME "; 
$db_write ->query($sqlQuery); 
echo $lastInsertId = $db_write ->fetchOne('SELECT last_insert_id()'); 
           OR 

echo $db_write ->lastInsertId(); // you may also try this. 

For more Info 

Click Here

1

Verwenden Sie den folgenden Code zu definieren Ihre Abfrage zu beheben:

$customer = Mage::getModel("customer/customer"); 
$customer ->setWebsiteId($websiteId) 
      ->setStore($store) 
      ->setFirstname('John') 
      ->setLastname('Doe') 
      ->setEmail('[email protected]') 
      ->setPassword('somepassword'); 


      $address = Mage::getModel("customer/address"); 
      $address->setCustomerId($customer->getId()) 
      ->setFirstname($customer->getFirstname()) 
      ->setMiddleName($customer->getMiddlename()) 
      ->setLastname($customer->getLastname()) 
      ->setCountryId('HR') 
      ->setPostcode('31000') 
      ->setCity('Osijek') 
      ->setTelephone('0038511223344') 
      ->setFax('0038511223355') 
      ->setCompany('Inchoo') 
      ->setStreet('Kersov') 
      ->setIsDefaultBilling('1') 
      ->setIsDefaultShipping('1') 
      ->setSaveInAddressBook('1'); 

     try{ 
      $address->save(); 
      $lastId = $address->getId(); // Last id 
     } 
     catch (Exception $e) { 
      Zend_Debug::dump($e->getMessage()); 
     } 
0

Es gibt eine Magento-Methode dafür:

$table = $model->getResource()->getMainTable(); 

$connection = Mage::getSingleton('core/resource')->getConnection(); 
$id = $connection->lastInsertId($tableName); 
Verwandte Themen