Последний вставленный идентификатор в cakephp - PullRequest
1 голос
/ 25 января 2012

Я использую этот код, но он не работает в cakephp и код:

$inserted = $this->get_live->query("INSERT INTO myaccounts (fname) values('test');

После этого я использую:

$lead_id = $this->get_live->query("SELECT LAST_INSERT_ID()");

Работает, но только один раз.1007 *

Ответы [ 3 ]

6 голосов
/ 25 января 2012

Попробуй это.Намного меньше печатать.В вашем контроллере сохранение данных в вашей базе данных так же просто, как:

public function add() {
    $data = "test";
    $this->Myaccount->save($data);
    // $this->set sends controller variables to the view
    $this->set("last", $this->Myaccount->getLastInsertId());
}

Вы можете циклически перебирать массив данных для сохранения с помощью foreach, возвращая insertId после каждого, или вы можете использоватьМетод торта saveAll().

Myaccount - это объект Model, связанный с вашим контроллером.Соглашение об именах Cake требует, чтобы таблица с именем «myaccounts» имела класс модели с именем «Myaccount» и контроллер с именем «Myaccounts_Controller».Файлы представлений будут находиться в / app / views / myaccounts / ... и будут именоваться в соответствии с методами вашего контроллера.Итак, если у вас есть метод add () ... в вашем контроллере, ваш вид будет /app/Views/Myaccounts/add.ctp.

Метод save () создает оператор INSERT.Если данные, которые вы хотите сохранить, находятся в $this->data, вы можете пропустить передачу аргумента в;это сохранит $ this-> data по умолчанию.save() даже автоматически определяет, генерировать ли оператор UPDATE или INSERT на основании наличия id в ваших данных.

Как правило, если вы используете необработанные SQL-запросы в любой точке Cake, вы, вероятно, делаете это неправильно.Мне еще предстояло столкнуться с таким чудовищно сложным запросом, что ORM Cake не смог его смоделировать.

http://book.cakephp.org/2.0/en/models/saving-your-data.html

http://book.cakephp.org/2.0/en/models/additional-methods-and-properties.html?highlight=getlastinsertid

HTH:)

2 голосов
/ 04 сентября 2013

Вы можете получить last inserted record id по (работает для cakePHP 1.3.x и cakePHP 2.x)

echo $this->ModelName->getLastInsertID();

Альтернативно, вы можете использовать:

echo $this->ModelName->getInsertID();

CakePHP 1.3.x найдено вторт / libs / model / model.php в строке 2775

CakePHP 2.x находится в lib / Cake / Model / Model.php в строке 3167

Примечание: Этофункция не работает, если вы запускаете запрос на вставку вручную

0 голосов
/ 16 июля 2013
pr($this->Model->save($data));
id => '1'

id - это последнее введенное значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...