Chegando LastInsertId do SimpleTest TestAction no CakePHP
-
10-12-2019 - |
Pergunta
Eu estou escrevendo um teste de unidade no CakePHP 1.3 através de SimpleTest.
Eu execute o seguinte código, que funciona (ele cria como esperado)
$this->testAction('/post/add/user:'. $userId, array('method' => 'post'));
Eu preciso encontrar o ID do post adicionado para usar nos próximos dois testes de edição de um post e apagar um post.Eu tentei fazer referência através do modelo (i.e.$Post->id, $this->Post->id), mas parece que vai através de testAction não funcionam da mesma maneira.
Eu também percebo que eu poderia consultar para encontrar max(id), mas, em seguida, se há apenas acontece de ser um outro usuário sobre o sistema de teste que insere um novo post quase ao mesmo tempo, poderia estragar o resultado (pelo menos até onde eu sei - me corrija se eu estiver errado).
Solução
Geralmente, a partir de um controlador de você deve usar
$this->Post->getLastInsertID();
Este é um wrapper para conectores de métodos.
$this->Post->id
é usado para definir um id e, em seguida, recuperar ou conjunto de dados.
Outras dicas
Eu nunca usei o cakephp antes, mas com o mysql e a mysql você pode obter a última inserido IDENTIFICAÇÃO com o seguinte:
mysql_insert_id()
, e $mysqli->insert_id
respectivamente.