从CakePHP中的SimpleTest TestAction获取LastInsertId

时间:2012-03-09 22:05:25

标签: php cakephp simpletest

我正在通过SimpleTest在CakePHP 1.3中编写单元测试。

我运行以下代码,它可以正常工作(它确实按预期创建)

$this->testAction('/post/add/user:'. $userId, array('method' => 'post'));

我需要找到在接下来的两个测试中使用的添加帖子的ID - 编辑帖子和删除帖子。我已尝试通过模型进行引用(即$ Post-> id,$ this-> Post-> id),但看起来通过testAction的工作方式不同。

我也意识到我可以查询找到max(id),但是如果恰好是测试系统上的另一个用户在几乎同时插入一个新帖子,那么可能搞砸了结果(至少据我所知 - 如果我错了,请纠正我。)

2 个答案:

答案 0 :(得分:1)

通常,您应该使用控制器

$this->Post->getLastInsertID();

这是连接器方法的包装器。

$this->Post->id 

用于设置ID,然后检索或设置数据。

答案 1 :(得分:0)

我之前从未使用过cakephp,但是使用mysql和mysqli,您可以使用以下内容获取最后插入的ID:

分别为

mysql_insert_id()$mysqli->insert_id

http://php.net/manual/en/function.mysql-insert-id.php

http://php.net/manual/en/mysqli.insert-id.php