2012-11-01 86 views
0

我已經檢查過this問題以及this也是如此。我試圖執行this問題中描述的模型。CakePHP如何在保存數據後獲取最新的自動遞增ID

我想要做的是,在消息控制器的添加功能上,在線程表中創建一個記錄(該表只有1個字段,它是主鍵和自動增量),然後取其id並將其插入到消息表以及我已有的用戶標識,然後將其保存在message_read_state和thread_participant表中。

這就是我想要的線程模型做:

function saveThreadAndGetId(){ 
    //$data= array('Thread' => array()); 
    $data= array('id' => ' '); 
    //Debugger::dump(print_r($data)); 
    $this->save($data); 
    debug('id: '.$this->id); 
    $threadId = $this->getInsertID(); 
    debug($threadId); 
    $threadId = $this->getLastInsertId(); 
    debug($threadId); 
    die(); 
    return $threadId; 
} 


$data= array('id' => ' '); 

這條線從上面的函數將在線程表中的行,但我無法檢索ID。有什麼方法可以得到身份證,還是我錯誤地保存它?

起初我在做查詢的事情在消息控制器:

$this->Thread->query('INSERT INTO threads VALUES();'); 

但後來我發現,人工查詢lastId功能不工作,所以我恢復。

回答

1

您正在將$data設置爲基本上爲空的陣列,其ID爲' '。不知道你在期待什麼。 :)請不要手動將'id'設置爲空字符串,並保存一些數據。那麼你應該得到的ID很好。

+0

我必須保存什麼數據的任何其他名稱?該表只有一個ID,自動增量列,我已嘗試所有其他選項,這種方式它savs,但doent顯示最後插入的ID ... – shabby

+0

我認爲更大的問題是,爲什麼你有一張桌子單列不存儲實際數據? – Dave

+0

我只是在引用的問題中實現了架構,我已經修復了它,現在它的工作,但我想知道如何保存它,如果某種方式表有一列/字段 – shabby

0

這裏返回下一個自動增量值。

/* @return int */ 
private function getNextThreadId() { 
    $result = $this->Thread->query("SHOW TABLE STATUS LIKE 'threads';"); 
    $next = $result[0]['TABLES']['Auto_increment']; 
    return $next; 
} 

主題 - >或你的模型的任何其他名稱

帖子 - >或你的數據庫表

相關問題