Files
app
assets
public
vendor
alexgarrett
composer
danielstjules
doctrine
hassankhan
illuminate
container
contracts
database
Capsule
Connectors
Console
Eloquent
Migrations
Query
Grammars
Grammar.php
MySqlGrammar.php
PostgresGrammar.php
SQLiteGrammar.php
SqlServerGrammar.php
Processors
Builder.php
Expression.php
JoinClause.php
Schema
Connection.php
ConnectionInterface.php
ConnectionResolver.php
ConnectionResolverInterface.php
DatabaseManager.php
DatabaseServiceProvider.php
Grammar.php
MigrationServiceProvider.php
MySqlConnection.php
PostgresConnection.php
QueryException.php
README.md
SQLiteConnection.php
SeedServiceProvider.php
Seeder.php
SqlServerConnection.php
composer.json
support
nesbot
slim
symfony
twig
autoload.php
.gitignore
README.md
composer.json
composer.lock
composer.phar
mode.php
website/vendor/illuminate/database/Query/Grammars/MySqlGrammar.php

145 lines
2.7 KiB
PHP
Executable File

<?php namespace Illuminate\Database\Query\Grammars;
use Illuminate\Database\Query\Builder;
class MySqlGrammar extends Grammar {
/**
* The components that make up a select clause.
*
* @var array
*/
protected $selectComponents = array(
'aggregate',
'columns',
'from',
'joins',
'wheres',
'groups',
'havings',
'orders',
'limit',
'offset',
'lock',
);
/**
* Compile a select query into SQL.
*
* @param \Illuminate\Database\Query\Builder
* @return string
*/
public function compileSelect(Builder $query)
{
$sql = parent::compileSelect($query);
if ($query->unions)
{
$sql = '('.$sql.') '.$this->compileUnions($query);
}
return $sql;
}
/**
* Compile a single union statement.
*
* @param array $union
* @return string
*/
protected function compileUnion(array $union)
{
$joiner = $union['all'] ? ' union all ' : ' union ';
return $joiner.'('.$union['query']->toSql().')';
}
/**
* Compile the lock into SQL.
*
* @param \Illuminate\Database\Query\Builder $query
* @param bool|string $value
* @return string
*/
protected function compileLock(Builder $query, $value)
{
if (is_string($value)) return $value;
return $value ? 'for update' : 'lock in share mode';
}
/**
* Compile an update statement into SQL.
*
* @param \Illuminate\Database\Query\Builder $query
* @param array $values
* @return string
*/
public function compileUpdate(Builder $query, $values)
{
$sql = parent::compileUpdate($query, $values);
if (isset($query->orders))
{
$sql .= ' '.$this->compileOrders($query, $query->orders);
}
if (isset($query->limit))
{
$sql .= ' '.$this->compileLimit($query, $query->limit);
}
return rtrim($sql);
}
/**
* Compile a delete statement into SQL.
*
* @param \Illuminate\Database\Query\Builder $query
* @return string
*/
public function compileDelete(Builder $query)
{
$table = $this->wrapTable($query->from);
$where = is_array($query->wheres) ? $this->compileWheres($query) : '';
if (isset($query->joins))
{
$joins = ' '.$this->compileJoins($query, $query->joins);
$sql = trim("delete $table from {$table}{$joins} $where");
}
else
{
$sql = trim("delete from $table $where");
}
if (isset($query->orders))
{
$sql .= ' '.$this->compileOrders($query, $query->orders);
}
if (isset($query->limit))
{
$sql .= ' '.$this->compileLimit($query, $query->limit);
}
return $sql;
}
/**
* Wrap a single string in keyword identifiers.
*
* @param string $value
* @return string
*/
protected function wrapValue($value)
{
if ($value === '*') return $value;
return '`'.str_replace('`', '``', $value).'`';
}
}