insert_id в Кохана 3 - PullRequest
       23

insert_id в Кохана 3

1 голос
/ 23 ноября 2010

Я использую фреймворк 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) Я собираюсь: массив ( [0] => 0 [1] => 1 ) Ключ insert_id равен 0, хотя у меня много записей в БД. Что я делаю не так?

1 Ответ

1 голос
/ 23 ноября 2010

Я думаю, вам придется использовать 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).

...