2013-03-02 21 views
6

customer_address_entityテーブルに顧客アドレスを保存しています。すべてが大丈夫ですが、私は最後に生成したいentity_id。誰かが私を助けることができますか?Magentoカスタマーアドレスモデルで最後に挿入されたIDを取得する方法

私は以下のコードを持っています。

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

答えて

10

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

1使用getId()を保存した後、IDを取得するには - モデルを使用している場合、これは

$model->getId() 

2 $モデルオブジェクトによって最近追加/保存されたアイテムのIDを返します。 - しかし、カスタムクエリを使用する場合は、最後に挿入されたIDを取得するために次のように使用してください

$connection = Mage::getSingleton(’core/resource’)->getConnection(’core_write’); 
$sql   = "INSERT INTO <table> SET field1 = ?, field2 = ?, ..."; 
$connection->query($sql, array($field1_value, $field2_value, ...)); 
$lastInsertId = $connection->lastInsertId(); 
echo $lastInsertId; 

3 - 特定のテーブルから、独自の関数を定義することで、最後に挿入IDを取得

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

あなたのクエリを解決するために、次のコードを使用します

$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

それにはマゼンタの方法があります:

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

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