簡體   English   中英

php yii2如何在查詢yii2插入中自動生成ID?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM