2010-07-16 55 views
0

目前我正在试图访问只是用插入的数据:

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']; 

我不明白为什么保存成功,但ID没有设置?

编辑:
所以问题是,因为我用,迫使我读返回多个表中的数据的数据库关系,它结束了从多个表返回数据,所以我真正需要做的就是:

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

而不是:

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

你在if语句之前检查过'$ this-> data'的内容吗?用var_dump($ this-> data)' – 2010-07-16 23:27:16

+0

在if之前,设置变量,除了ID。 在if之后,变量仍然被设置,除了ID,应该由插入设置。 – chustar 2010-07-16 23:51:21

+0

OIC,问题似乎是模型没有从数据库重新加载数据。正确?从技术上讲,你不是试图访问刚刚插入的数据,而是数据库作为插入结果创建的数据。我不熟悉CakePHP,但我不希望它自己这样做。我希望不得不从数据库重新加载数据。 – 2010-07-17 00:18:26

回答

2

为了得到这个模型插入的最后一条记录的ID,你应该使用

$this->User->getLastInsertID(); 

通常$this->User->id用于使某些操作知道应该处理哪个记录,不能用它从数据库检索数据。

0

是的,保存数据时不更新$model->data['Model']['id']。只有$model->id是。这里的所有都是它的。

相关问题