Получение LastInsertId от SimpleTest TestAction в CakePHP - PullRequest
1 голос
/ 10 марта 2012

Я пишу модульный тест в CakePHP 1.3 через SimpleTest.

Я запускаю следующий код, который работает (он создает, как и ожидалось)

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

Мне нужно найти идентификатор этого добавленного сообщения, чтобы использовать его в следующих двух тестах - редактировании сообщения и удалении сообщения.Я пробовал ссылаться через модель (т.е. $ Post-> id, $ this-> Post-> id), но похоже, что выполнение testAction не работает так же.

Я также понимаю, что яможет запросить max (id), но тогда, если в тестовой системе окажется еще один пользователь, который вставит новый пост в почти в то же время, он может испортить результаты (по крайней мере, какнасколько я знаю - поправьте меня, если я ошибаюсь).

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Обычно с контроллера вы должны использовать

$this->Post->getLastInsertID();

Это обертка для методов коннекторов.

$this->Post->id 

используется для установки идентификатора, а затем для получения или установки данных.

0 голосов
/ 10 марта 2012

Я никогда раньше не использовал cakephp, но с помощью mysql и mysqli вы можете получить последний вставленный идентификатор со следующим:

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

...