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).

Другие вопросы по тегам