2

使用 Propel,我可以使用

$user = new User;
$user->setName('Test');
$user->save();

$user->getId()将包含插入对象的 ID。但这只有在我使用自动递增的 ID 值时才有效。

当 ID 由函数生成时,有什么方法可以让它工作吗?

我可以附加RETURNING id到插入查询的末尾以返回 ID,但我不确定是否可以将此数据返回到 Propel User 对象中。

4

2 回答 2

3

您应该能够通过调用reload()您希望水合的对象来检索丢失的(外部创建的)值。

//hydrates fields by database values
$user->reload();
//should return the postgresql-generated-value
$user->getId();

编辑:错别字

于 2015-11-10T16:29:13.853 回答
0

如果您在 MySQL 中有一个函数或触发器,它会在每次插入时自动为您创建一个 ID,那么您需要为每个会话/连接保存这个生成的值。例如 using last_insert_id(new_id),因此您可以使用SELECT last_insert_id();PHP 中的当前连接获取此值。没有其他逻辑方法可以通过函数/触发器获取此类生成的 ID。

于 2015-12-07T17:38:33.897 回答