Получите последнюю ID вставки
-
26-09-2019 - |
Вопрос
Здравствуйте, я использую CakePhp 1.3, и я не могу отремонтировать идентификатор последней вставленной строки. Я на самом деле использую $ this-> Model-> ID, чтобы отречить последний вставленный идентификатор, но я не могу получить удостоверение личности. Когда он пытался проверить, что такое возвратный тип, он говорит как Bool (false), что означает, что ничего не возвращается.
Здесь я загружаю другую модель в другом контроллере, так что бы это была проблема ?? Но даже если я загрузку, я ничего не возвращаюсь !!
$this->loadModel('Contact');
$this->Contact->query("insert into contacts(tblContact_firstName,tblContact_lastName,tblContact_company,tblContact_department,tblContact_address,tblContact_country,tblContact_city,tblContact_state,tblContact_zipcode,tblContact_phone1,tblContact_email1) values('$sanitizedFormData[fname]','$sanitizedFormData[lname]','','$sanitizedFormData[company]','$sanitizedFormData[address]','$sanitizedFormData[country]','$sanitizedFormData[city]','$sanitizedFormData[state]','$sanitizedFormData[zip]','$sanitizedFormData[phone]','$sanitizedFormData[email]');");
$this->loadModel('Contact');
$contactId = $this->Contact->id;
И когда я напечатал $ this-> Acture Array рекурсивно, я нашел значение ключа «ID» пустой. Так что объясняет, почему я получал пустую ценность.
Теперь дали мою ситуацию, как бы я получил последний вставленный идентификатор, специфичный для контакта контроллера?
Решение
Когда вы используете query()
Вы потеряете много автоматики CakePhP. Использовать save()
вместо.
На самом деле, вам даже не нужно загружать контакт в этом случае. Вы можете выполнить любой запрос от текущего контроллера с query()
Даже сохранение в любой другой таблице.
Вы также можете избежать использования loadModel()
Если ваша текущая модель как-то связана с контактом ($this->CurrentModel->AnotherOne->Contact->save(...)
).
Другие советы
Я думаю, что вы просто хотите сделать:
$this->getLastInsertID();
http://book.cakephp.org/2.0/en/models/additional-methods-and-properties.html#model-getlastinserti.
Если это MYSQL, вы можете использовать «Выбрать из контактов Last_insert_id ()», чтобы получить последний идентификатор. или просто "выберите last_insert_id ()"
Для MSSQL это «выбрать @@ личность».
Это обходит любое решение в CakePhp, хотя, поэтому может быть лучшее решение.
Вы можете получить last inserted record id
к
echo $this->ModelName->getLastInsertID();
Поочередно, вы можете использовать:
echo $this->ModelName->getInsertID();
Эти методы можно найти в торт / libs / Model / Model.php на линии 2775
Примечание: Эта функция не работает, если вы запустите запрос вставки вручную