CakePHP не устанавливает переменную $ this-> Model-> id - PullRequest
0 голосов
/ 17 июля 2010

Я сейчас пытаюсь получить доступ к данным, которые были только что вставлены, используя:

if($this->User->save($this->data))
{
    $user_id = $this->User->id;    #119
    ...

Но я получаю ошибку:

Notice (8): Undefined index:  id [APP/controllers/users_controller.php, line 119]
Code | Context
if($this->User->save($this->data))
{
    $user_id = $this->data['User']['id'];

Я не понимаю, почему сохранение прошло успешно, но идентификатор не установлен?

EDIT:
Таким образом, проблема заключалась в том, что, поскольку я использовал отношения с базой данных, которые заставляли мое чтение возвращать данные из нескольких таблиц, в конечном итоге он возвращал данные из нескольких таблиц, поэтому мне действительно нужно было:

$user = $this->User->read();
$id = $user['User']['id'];

вместо:

$user = $this->User->read();
$id = $user['id'];

Ответы [ 2 ]

2 голосов
/ 17 июля 2010

Чтобы получить идентификатор последней записи, вставленной этой моделью, вы должны использовать

$this->User->getLastInsertID();

Обычно $this->User->id используется для того, чтобы какое-либо действие узнало, какую запись оно должно обработать, вы не можете использовать его для извлеченияданные из базы данных.

0 голосов
/ 17 июля 2010

Да, $model->data['Model']['id'] не обновляется при сохранении данных.Только $model->id есть.Вот и все, что нужно.

...