2010-07-16 53 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是。這裏的所有都是它的。

相關問題