[英]php yii2 how to make automaticly id in query yii2 insert?
我有這樣的代碼,
$request = Yii::$app->request;
$post = $request->post();
$filesettingid = $post['filesettingid'];
$checkboxValue = $post['selection'];
for($i=0;$i<sizeof($checkboxValue);$i++) {
$store = Yii::$app->db->createCommand('SELECT id FROM store WHERE port='.$checkboxValue[$i])->queryAll();
$storeid = $store[$i]['id'];
Yii::$app->db->createCommand()->insert('tes',
[
'id' => $i+1,
'filesetting_id' => $filesettingid,
'store_id' => $storeid
])->execute();
}
我想要的是,每插入一個新data
,id就會像1,2,3,4一樣自動生成。
上面的代碼中的問題是ID
始終為1。
有可能使它成為現實嗎? 所以我想要的是:
第一次插入id
= 1,第二次插入id
= 2,這是自動發生的。
您是否考慮過將數據庫引擎設置為在每次插入時自動遞增值?
以Yii2默認用戶表為例。 ID字段是自動遞增的,您不必擔心會出現問題。 每次您發送新的插入引擎增量ID時,它都會自己歸檔。 請參閱"advanced template"\\console\\migrations\\m130524_201442_int
下的默認遷移。 (您的文件名可能會因Yii2版本而有所不同)
$this->createTable('{{%user}}', [
'id' => $this->primaryKey(),
'username' => $this->string()->notNull()->unique(),
'auth_key' => $this->string(32)->notNull(),
'password_hash' => $this->string()->notNull(),
'password_reset_token' => $this->string()->unique(),
'email' => $this->string()->notNull()->unique(),
'status' => $this->smallInteger()->notNull()->defaultValue(0),
.........
], $tableOptions);
將“ id”設置為主鍵數據庫時,數據庫會自動知道要自動遞增。 如果您已經有一個表,那么ID字段不是主鍵,則可以使用followign遷移:
$this->alterColumn('{{%databaseName}}', 'columnName', $this->integer()->notNull().' AUTO_INCREMENT');
您也可以從管理控制台進行設置,或運行SQL查詢。 根據您使用的數據庫引擎的不同,此外觀可能有所不同,但是概念相同。
MYSQL:
在MySQL工作台中,右鍵單擊有問題的表,選擇Alter Table,然后選中要自動遞增的列旁邊的NNm和AI。 見截圖
或運行命令:
ALTER TABLE `dbName`.`nameOfTheTable` MODIFY `columnName` INT AUTO_INCREMENT NOT NULL;
我對SQL有點生銹,所以如果它不起作用,請告訴我,我將為您提供正確的命令。
希望這可以幫助。 祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.