データを一括挿入するための Yii フレームワークの単純な拡張クラスの詳細な説明

*文
リリース: 2023-03-19 07:30:01
オリジナル
1327 人が閲覧しました

この記事では主に、Yii フレームワークにデータ拡張クラスを一括挿入する簡単な実装方法を紹介します。Yii 拡張クラスとデータベース関連の操作スキルが必要な友人は参考にしてください。お役に立てれば幸いです。

MySQL INSERT ステートメントでは、以下に示すように、複数行のデータを挿入できます。

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
ログイン後にコピー

次に、バッチ挿入を実装するための主なタスクは、データを列順に上記の形式にアセンブルすることです。これは、 sprintf 関数と vsprintf 関数。

以下は、バッチ挿入を実装する Yii 拡張クラスの簡単な例です (VARCHAR 型データをサポート):

class = $class;
   $this->createtpl();
   parent::_construct($db);
  }
  private function createtpl(){
   $this->fresh = true;
   $value_tpl = "";
   $columns_string = "";
   $this->columns = $this->class->getMetaData()->tableSchema->columns;
   $counter = 0;
   foreach($this->columns as $column){
    /** @var CDbColumnSchema $column */
    if($column->autoIncrement){
     $value_tpl .= "0";
    }else{
     $value_tpl .= "\"%s\"";
    }
    $columns_string .= $column->name;
    $counter ++;
    if($counter != sizeof($this->columns)){
     $columns_string .= ", ";
     $value_tpl .= ", ";
    }
   }
   $this->insert_tpl = sprintf($this->insert_tpl, $this->class->tableName(), $columns_string);
   $this->value_tpl = sprintf($this->value_tpl, $value_tpl);
  }
  /**
   * @param CActiveRecord $record
   */
  public function add($record){
   $values = array();
   $i = 0;
   foreach($this->columns as $column){
    if($column->autoIncrement){
     continue;
    }
    $values[$i] = $this->class->{$column->name};
    $i ++;
   }
   if(!$this->fresh){
    $this->query .= ",";
   }else{
    $this->query = "values";
   }
   $this->fresh = false;
   $this->query .= vsprintf($this->value_tpl, $values);
   return true;
  }
  public function execute(){
   $this->setText($this->insert_tpl." ".$this->query);
   return parent::execute();
  }
}
ログイン後にコピー

使用方法は、add メソッドでデータを 1 つずつ追加してから、execute を呼び出します。

関連する推奨事項:

Yii が不正なコードをフィルタリングする方法

Yii は DeleteAll 偶数テーブル削除エラー報告の問題を解決します

Yii2 は Xunsou を統合して効率的な中国語単語の分割を実現します取得

以上がデータを一括挿入するための Yii フレームワークの単純な拡張クラスの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!