Если вы используете «таблицу» (это означает, что ваш класс расширяет Zend_Db_Table_Abstract
), то последний вставленный первичный ключ с сгенерированным ключом автоматически возвращается при вызове Zend_Db_Table_Abstract::insert
-метода:
$personTable = new My_Model_DbTable_Person()
$addressTable = new My_Model_DbTable_Address()
$personId = $personTable->insert(array(
"name" => "John",
"familyname" => "Doe",
));
$addressTable->insert(array(
"person_id" => $personId,
"street" => "Some Street",
"city" => "Gotham City",
));
Более подробная информация об этом методе приведена в справочнике Zend Zend_Db_Table
Если вы используете адаптер базы данных напрямую (класс extends Zend_Db_Adapter_Abstract
, экземпляр созданиспользование Zend_DB::factory
или создание базы данных с использованием ресурсов приложения), то есть метод Zend_Db_Adapter_Abstract::lastInsertId
, который является немного более гибким.Для получения дополнительной информации см. Ссылку Zend Zend_Db_Adapter
.
$db = Zend_Db::factory(...);
$db->insert("person", array(
"name" => "John",
"familyname" => "Doe",
));
$personId = $db->lastInsertId();
$db->insert("address", array(
"person_id" => $personId,
"street" => "Some Street",
"city" => "Gotham City",
));