Получение LastInsertId из SimpleTest TestAction в CakePHP

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

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

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

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

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


person quadium32    schedule 09.03.2012    source источник


Ответы (2)


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

$this->Post->getLastInsertID();

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

$this->Post->id 

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

person olaurendeau    schedule 10.03.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

person Ben Ashton    schedule 09.03.2012