code: public function insert($table, $columns)
      {
          $params = [];
          $sql = $this->db->getQueryBuilder()->insert($table, $columns, $params);
  
          return $this->setSql($sql)->bindValues($params);
      }
docs: Creates an INSERT command.
  
  For example,
  
  ```php
  $connection->createCommand()->insert('user', [
  'name' => 'Sam',
  'age' => 30,
  ])->execute();
  ```
  
  The method will properly escape the column names, and bind the values to be inserted.
  
  Note that the created command is not executed until [[execute()]] is called.
  
  @param string $table the table that new rows will be inserted into.
  @param array|\yii\db\Query $columns the column data (name => value) to be inserted into the table or instance
  of [[yii\db\Query|Query]] to perform INSERT INTO ... SELECT SQL statement.
  Passing of [[yii\db\Query|Query]] is available since version 2.0.11.
  @return $this the command object itself