insert_id в Кохана 3
Я использую фреймворк Kohana 3 с хранимыми процедурами Mysql. Как я могу получить идентификатор последней вставленной записи? Вот код:
class Model_MyModel extends Kohana_Model
{
public function insertNew($param1, $param2)
{
$result = $this->_db->query(Database::INSERT, 'CALL insertNew('.$param1.', '.$param2.', false)';
return $result;
}
...
...
}
В документации говорится, что метод query() возвращает массив с последним идентификатором вставки и номером затронутой строки при выполнении запроса вставки. Когда я вызываю: print_r($result) я получаю: Array ( [0] => 0 [1] => 1) Ключ insert_id равен 0, хотя у меня много записей в БД. Что я делаю не так?
1 ответ
Я думаю, вам придется использовать SQL LAST_INSERT_ID()
после вставки с использованием процедуры:
SELECT LAST_INSERT_ID() as last_insert_id FROM table_name
(в вашей процедуре просто определите этот запрос в конце).
Проблема в этом случае заключается в том, что Kohana автоматически возвращает mysql_insert_id и mysql_affered_rows в качестве результата для Database::INSERT, поэтому вам нужно будет вызвать процедуру как запрос SELECT и извлечь ее (Database::SELECT).