使用 Propel,我可以使用
$user = new User;
$user->setName('Test');
$user->save();
$user->getId()
将包含插入对象的 ID。但这只有在我使用自动递增的 ID 值时才有效。
当 ID 由函数生成时,有什么方法可以让它工作吗?
我可以附加RETURNING id
到插入查询的末尾以返回 ID,但我不确定是否可以将此数据返回到 Propel User 对象中。
您应该能够通过调用reload()
您希望水合的对象来检索丢失的(外部创建的)值。
//hydrates fields by database values
$user->reload();
//should return the postgresql-generated-value
$user->getId();
编辑:错别字
如果您在 MySQL 中有一个函数或触发器,它会在每次插入时自动为您创建一个 ID,那么您需要为每个会话/连接保存这个生成的值。例如 using last_insert_id(new_id)
,因此您可以使用SELECT last_insert_id();
PHP 中的当前连接获取此值。没有其他逻辑方法可以通过函数/触发器获取此类生成的 ID。