不使用自动增量ID时,使用Propel ORM获取插入行的ID

时间:2015-11-05 16:36:10

标签: php pdo propel2

使用Propel,我可以使用

保存对象
$user = new User;
$user->setName('Test');
$user->save();

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

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

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

2 个答案:

答案 0 :(得分:3)

您应该能够通过在想要保湿的物体上调用reload()来检索缺失的(外部创建的)值。

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

修改:拼写错误

答案 1 :(得分:0)

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