我想在appModel中編寫一個函數,該函數返回我想要的每個模型的下一個自動增量主ID。例如在UserController中,我使用$this->user->nextId()
。 我知道,接下來返回自動遞增主ID查詢:在cakephp中獲取下一個自動增量ID
SELECT Auto_increment FROM information_schema.tables WHERE table_name='table-name' AND table_schema='db-name'
我想在appModel中編寫一個函數,該函數返回我想要的每個模型的下一個自動增量主ID。例如在UserController中,我使用$this->user->nextId()
。 我知道,接下來返回自動遞增主ID查詢:在cakephp中獲取下一個自動增量ID
SELECT Auto_increment FROM information_schema.tables WHERE table_name='table-name' AND table_schema='db-name'
http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#model-query
所以,你可以這樣做:
public function nextId() {
$result = $this->User->query("SELECT Auto_increment FROM information_schema.tables AS NextId WHERE table_name='table-name' AND table_schema='db-name'");
return $result[0]['NextId']['Auto_increment'];
}
您可能需要編輯return語句。我不確定這是否會用到它的確切格式。
然而正如其他人所說,這不是你應該做的事情。
兩個訪問者同時調用此函數將意味着其中一個會收到ID錯誤!使用這個:http://stackoverflow.com/a/38106365/3022387 – flowtron
你爲什麼要這樣?這樣的代碼是不可靠的。考慮在您的網站上的兩個用戶在同一個。兩者同時檢索auto_inc,得到(說)42,並且都使用它。其中一個會因主鍵違規而丟失。這是一場比賽,有人會輸。 –
您應該學習如何正確使用框架。然後你會發現你永遠不需要這個功能。除了馬克B提到的:它沒有意義使用它。 – mark
是的你是對的,但我需要它。 – beautifulmind