2016-12-09 4 views
0

私が欲しいものphp yii2クエリyii2の挿入で自動的にIDを挿入する方法は?

 $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(); 
     } 

、このようなコードを持っているが、IDが1,2,3,4のように自動に生成されます、私は新しいdataを挿入し、それぞれです。

上記のコードでは問題は、IDは常に1

、それは本当のことが可能であることですか? だから私が欲しいものは:

最初に挿入、id = 1、秒はid = 2であり、それは自動的に起こります。

答えて

1

各インサートでデータベースエンジンを自動インクリメント値に設定したことはありますか?

例としてYii2のデフォルトユーザーテーブルを取り上げます。 ID filedは自動的にインクリメントされ、問題を設定することについて心配する必要はありません。新しいインサートエンジンを送信するたびに、それ自身で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のワークベンチで

は右、問題のテーブルをクリックしてテーブルの変更を選択し、自動インクリメントをする列の隣にNNMとAIをご確認ください。 See Screenshot

またはコマンドを実行します。

ALTER TABLE `dbName`.`nameOfTheTable` MODIFY `columnName` INT AUTO_INCREMENT NOT NULL; 

それは私が私があなたに右のコマンドを取得します知っているように動作しませんので、もし私が、私のSQLに少しさびています。

これが役に立ちます。がんばろう。

+0

すごく大丈夫です、それは私が必要としているものです。大きな感謝です。 – yosafat

+0

あなたは大歓迎です! –

関連する問題