本文整理汇总了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);
}
示例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);
}
示例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';
}