Вопрос

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top