cakephp getLastInsertID / Model-> id - PullRequest
0 голосов
/ 12 марта 2012

getLastInsertID и Model-> id одинаковы?И какой может возникнуть проблема с параллелизмом?

$this->Model->save($this->data);
__thisFunctionTakesAVeryLongTimeToExecute(); //function 1
$insertId = $this->Model->getLastInsertId();

Возвращает ли getLastInsertId () идентификатор из данных, которые я сохранил 2 строками выше.Или он возвращает последний созданный идентификатор?

Я имею в виду, что произойдет, если функция 1 (__thisFunctionTakesAVeryLongTimeToExecute ();) выполнит другого пользователя и сохранит его еще раз.тогда какой идентификатор я получу?

Ответы [ 3 ]

0 голосов
/ 15 июня 2012

У меня есть другая похожая проблема.Если я поставлю

 $oid  = $this->Home->Order->getLastInsertID();
 $order = $this->Home->Order->find('first',array('conditions'=>array( 'Order.id'=>$oid)));

, ассоциации моделей между Order и его таблицами hasMany будут уничтожены.

Если я поставлю

 $oid  = 1; // for example
 $order = $this->Home->Order->find('first',array('conditions'=>array( 'Order.id'=>$oid)));

, ассоциации моделей будут сохранены !!!!

0 голосов
/ 03 апреля 2017

Используйте приведенный ниже код для cakePHP 3.0 или выше

 $result = $this->ModelName->save($data)
 echo $result->id;
0 голосов
/ 12 марта 2012
 $this->Model->id

Используется для установки идентификатора и чтения или изменения связанных данных.

$this->Model->getLastInsertID();

Возвращает идентификатор последней вставленной строки в этой модели.

Для вашего последнего вопроса, сделай тест!И опубликуйте свой ответ здесь.

...