예제 #1
0
 /**
  * 编译插入语句
  *
  * @param  \CatLib\Database\Grammars\Builder  $query
  * @param  array  $values
  * @return string
  */
 public function compileInsert(Builder $query, array $values)
 {
     $table = $this->wrapTable($query->from);
     if (!is_array(reset($values))) {
         $values = [$values];
     }
     if (count($values) == 1) {
         return parent::compileInsert($query, reset($values));
     }
     $names = $this->columnize(array_keys(reset($values)));
     $columns = [];
     foreach (array_keys(reset($values)) as $column) {
         $columns[] = '? as ' . $this->wrap($column);
     }
     $columns = array_fill(0, count($values), implode(', ', $columns));
     return "insert into {$table} ({$names}) select " . implode(' union all select ', $columns);
 }
예제 #2
0
 /**
  * 插入数据到数据库
  *
  * @param  array  $values
  * @return bool
  */
 public function insert(array $values)
 {
     if (empty($values)) {
         return true;
     }
     if (!is_array(reset($values))) {
         $values = [$values];
     } else {
         foreach ($values as $key => $value) {
             ksort($value);
             $values[$key] = $value;
         }
     }
     $bindings = [];
     foreach ($values as $record) {
         foreach ($record as $value) {
             $bindings[] = $value;
         }
     }
     $sql = $this->grammar->compileInsert($this, $values);
     return $this->connection->insert($sql, $this->cleanBindings($bindings));
 }