使用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,那么您需要为每个会话/连接保存此生成的值。例如,使用last_insert_id(new_id)
,因此可以通过PHP中的当前连接使用SELECT last_insert_id();
获取此值。没有其他逻辑方法可以通过函数/触发器获取此类生成的ID。