Я довольно новичок в CakePHP и имею проблему с получением последнего вставленного id. Моя схема выглядит следующим образом:CakePHP getLastInsertId() возвращает ноль
CREATE TABLE IF NOT EXISTS `markets` (
`id` int(11) NOT NULL,
`name` varchar(20) NOT NULL,
`region_code` varchar(5) NOT NULL,
`country_code` varchar(255) NOT NULL,
`language` varchar(255) NOT NULL,
`default_language` varchar(10) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
ALTER TABLE `markets`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `region_code` (`region_code`),
ADD KEY `locale` (`country_code`),
ADD KEY `language` (`language`);
ALTER TABLE `markets`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=8;
И это моя логика:
$this->loadModel('Market');
if(isset($this->request->data['Market'])) {
$this->Market->set($this->request->data);
if($this->Market->validates()) {
$this->Market->save($this->request->data);
echo $this->Market->id; //displays zero
echo $this->Market->getLastInsertID(); //also displays zero
}
}
Это все хорошо выглядит в MySQL, хотя, как идентификатор получает автоматически увеличивается там, как это должно быть.
P.S. Я просто вставить другую запись, и вот что вернулся:
array (size=1)
'Market' =>
array (size=8)
'name' => string 'Japan' (length=5)
'region_code' => string 'JP' (length=2)
'country_code' => string 'JP' (length=2)
'language' => string 'ja_JP' (length=5)
'default_language' => string 'ja_JP' (length=5)
'modified' => string '2015-04-23 09:11:34' (length=19)
'created' => string '2015-04-23 09:11:34' (length=19)
'id' => string '0' (length=1)
Итак, сейчас я просто добавил функцию под названием «getMarketLastInsertId» к модели рынка, которая принимает «country_code» (уникальный ключ таблицу) в качестве параметра и возвращает последний идентификатор ... Благодарности
вы можете попробовать $ this-> ModelName-> getInsertID(); – Enjoyted
$ this-> Market-> getInsertId(); также возвращает нуль – petermk
Правильно ли вы построили массив для сохранения в базе данных? Вы не проверяете, что сохранение завершено успешно –