当前位置: 首页>>代码示例>>PHP>>正文


PHP Grammar::compileInsert方法代码示例

本文整理汇总了PHP中Illuminate\Database\Query\Grammars\Grammar::compileInsert方法的典型用法代码示例。如果您正苦于以下问题:PHP Grammar::compileInsert方法的具体用法?PHP Grammar::compileInsert怎么用?PHP Grammar::compileInsert使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Illuminate\Database\Query\Grammars\Grammar的用法示例。


在下文中一共展示了Grammar::compileInsert方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: compileInsert

 /**
  * Compile an insert statement into SQL.
  *
  * @param  Illuminate\Database\Query\Builder  $query
  * @param  array  $values
  * @return string
  */
 public function compileInsert(Builder $query, array $values)
 {
     // Essentially we will force every insert to be treated as a batch insert which
     // simply makes creating the SQL easier for us since we can utilize the same
     // basic routine regardless of an amount of records given to us to insert.
     $table = $this->wrapTable($query->from);
     if (!is_array(reset($values))) {
         $values = array($values);
     }
     // If there is only one record being inserted, we will just use the usual query
     // grammar insert builder because no special syntax is needed for the single
     // row inserts in SQLite. However, if there are multiples, we'll continue.
     if (count($values) == 1) {
         return parent::compileInsert($query, $values[0]);
     }
     $names = $this->columnize(array_keys($values[0]));
     $columns = array();
     // SQLite requires us to build the multi-row insert as a listing of select with
     // unions joining them together. So we'll build out this list of columns and
     // then join them all together with select unions to complete the queries.
     foreach (array_keys($values[0]) as $column) {
         $columns[] = '? as ' . $this->wrap($column);
     }
     $columns = array_fill(9, count($values), implode(', ', $columns));
     return "insert into {$table} ({$names}) select " . implode(' union select ', $columns);
 }
开发者ID:defra91,项目名称:levecchiecredenze.it,代码行数:33,代码来源:SQLiteGrammar.php

示例2: insert

 /**
  * Insert a new record into the database.
  *
  * @param  array  $values
  * @return bool
  */
 public function insert(array $values)
 {
     if (empty($values)) {
         return true;
     }
     // Since every insert gets treated like a batch insert, we will make sure the
     // bindings are structured in a way that is convenient for building these
     // inserts statements by verifying the elements are actually an array.
     if (!is_array(reset($values))) {
         $values = [$values];
     } else {
         foreach ($values as $key => $value) {
             ksort($value);
             $values[$key] = $value;
         }
     }
     // We'll treat every insert like a batch insert so we can easily insert each
     // of the records into the database consistently. This will make it much
     // easier on the grammars to just handle one type of record insertion.
     $bindings = [];
     foreach ($values as $record) {
         foreach ($record as $value) {
             $bindings[] = $value;
         }
     }
     $sql = $this->grammar->compileInsert($this, $values);
     // Once we have compiled the insert statement's SQL we can execute it on the
     // connection and return a result as a boolean success indicator as that
     // is the same type of result returned by the raw connection instance.
     $bindings = $this->cleanBindings($bindings);
     return $this->connection->insert($sql, $bindings);
 }
开发者ID:denise92,项目名称:cms,代码行数:38,代码来源:Builder.php

示例3: compileInsert

 /**
  * Compile an insert statement into SQL.
  *
  * @param  \Illuminate\Database\Query\Builder  $query
  * @param  array  $values
  * @return string
  */
 public function compileInsert(Builder $query, array $values)
 {
     // Essentially we will force every insert to be treated as a batch insert which
     // simply makes creating the SQL easier for us since we can utilize the same
     // basic routine regardless of an amount of records given to us to insert.
     $table = $this->wrapTable($query->from);
     if (!is_array(reset($values))) {
         $values = [$values];
     }
     // If there is only one record being inserted, we will just use the usual query
     // grammar insert builder because no special syntax is needed for the single
     // row inserts in Oracle. However, if there are multiples, we'll continue.
     $count = count($values);
     if ($count == 1) {
         return parent::compileInsert($query, reset($values));
     }
     $columns = $this->columnize(array_keys(reset($values)));
     $rows = [];
     // Oracle requires us to build the multi-row insert as multiple inserts with
     // a select statement at the end. So we'll build out this list of columns
     // and then join them all together with select to complete the queries.
     $parameters = $this->parameterize(reset($values));
     for ($i = 0; $i < $count; $i++) {
         $rows[] = "into {$table} ({$columns}) values ({$parameters}) ";
     }
     return 'insert all ' . implode($rows) . ' select 1 from dual';
 }
开发者ID:mickael83,项目名称:Laravel-OracleDB,代码行数:34,代码来源:OracleGrammar.php


注:本文中的Illuminate\Database\Query\Grammars\Grammar::compileInsert方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。