如何通过Connection :: insert()插入数据时检索插入ID?

时间:2015-10-07 07:18:18

标签: cakephp datasource cakephp-3.0

我想在我的项目中使用connectionManager。

如何使用connectionManager :: insert

访问插入ID

例如:

 $connection = ConnectionManager::get('default');
 $connection->insert('cities', 
    [
       'name' => $city,
       'country' => $country_code,
    ]
 );

1 个答案:

答案 0 :(得分:2)

没有必要这样做,这将"只是工作"是否创建显式城市表类:

use Cake\ORM\TableRegistry;
$table = TableRegistry::get('cities');
$entity = $table->newEntity(
    [
       'name' => $city,
       'country' => $country_code,
    ]
);
$table->save($entity);
$cityId = $entity->id;

但是如何?

调用insert,返回一个语句对象:

$connection = ConnectionManager::get('default');
$statement = $connection->insert('cities', 
    [
       'name' => $city,
       'country' => $country_code,
    ]
 );

然后可以使用它来查找最后一个插入ID:

$cityId = $statement->lastInsertId('cities');

这是您不必担心使用ORM设计为保存方法takes care of that automatically