Commit 479b3f67 authored by Taylor Otwell's avatar Taylor Otwell

cleaning up various codes.

parent f27ec7ab
...@@ -14,8 +14,7 @@ class SQLite extends Connector { ...@@ -14,8 +14,7 @@ class SQLite extends Connector {
// SQLite provides supported for "in-memory" databases, which exist only for the // SQLite provides supported for "in-memory" databases, which exist only for the
// lifetime of the request. Any given in-memory database may only have one PDO // lifetime of the request. Any given in-memory database may only have one PDO
// connection open to it at a time. Generally, these databases are used for // connection open to it at a time. These are usually for testing.
// testing and development purposes, not in production scenarios.
if ($config['database'] == ':memory:') if ($config['database'] == ':memory:')
{ {
return new PDO('sqlite::memory:', null, null, $options); return new PDO('sqlite::memory:', null, null, $options);
......
...@@ -63,8 +63,7 @@ abstract class Grammar { ...@@ -63,8 +63,7 @@ abstract class Grammar {
// If the value being wrapped contains a column alias, we need to // If the value being wrapped contains a column alias, we need to
// wrap it a little differently as each segment must be wrapped // wrap it a little differently as each segment must be wrapped
// and not the entire string. We'll split the value on the "as" // and not the entire string.
// joiner to extract the column and the alias.
if (strpos(strtolower($value), ' as ') !== false) if (strpos(strtolower($value), ' as ') !== false)
{ {
$segments = explode(' ', $value); $segments = explode(' ', $value);
......
...@@ -401,11 +401,11 @@ class Query { ...@@ -401,11 +401,11 @@ class Query {
// will allow the developer to have a fresh query. // will allow the developer to have a fresh query.
$query = new Query($this->connection, $this->grammar, $this->from); $query = new Query($this->connection, $this->grammar, $this->from);
// Once the callback has been run on the query, we will store the
// nested query instance on the where clause array so that it's
// passed to the query grammar.
call_user_func($callback, $query); call_user_func($callback, $query);
// Once the callback has been run on the query, we will store the
// nested query instance on the where clause array so that it's
// passed to the query's query grammar instance.
$this->wheres[] = compact('type', 'query', 'connector'); $this->wheres[] = compact('type', 'query', 'connector');
$this->bindings = array_merge($this->bindings, $query->bindings); $this->bindings = array_merge($this->bindings, $query->bindings);
......
...@@ -16,7 +16,44 @@ class Schema { ...@@ -16,7 +16,44 @@ class Schema {
{ {
call_user_func($callback, $table = new Schema\Table($table)); call_user_func($callback, $table = new Schema\Table($table));
static::implications($table); return static::execute($table);
}
/**
* Create a new database table schema.
*
* @param string $table
* @param Closure $callback
* @return void
*/
public static function create($table, $callback)
{
$table = new Schema\Table($table);
// To indicate that the table is new and needs to be created, we'll run
// the "create" command on the table instance. This tells schema it is
// not simply a column modification operation.
$table->create();
call_user_func($callback, $table);
return static::execute($table);
}
/**
* Drop a database table from the schema.
*
* @param string $table
* @return void
*/
public static function drop($table)
{
$table = new Schema\Table($table);
// To indicate that the table needs to be dropped, we will run the
// "drop" command on the table instance and pass the instance to
// the execute method as calling a Closure isn't needed.
$table->drop();
return static::execute($table); return static::execute($table);
} }
...@@ -29,22 +66,27 @@ class Schema { ...@@ -29,22 +66,27 @@ class Schema {
*/ */
public static function execute($table) public static function execute($table)
{ {
// The implications method is responsible for finding any fluently
// defined indexes on the schema table and adding the explicit
// commands that are needed to tbe schema instance.
static::implications($table);
foreach ($table->commands as $command) foreach ($table->commands as $command)
{ {
$connection = DB::connection($table->connection); $connection = DB::connection($table->connection);
$grammar = static::grammar($connection); $grammar = static::grammar($connection);
// Each grammar has a function that corresponds to the command type and is for // Each grammar has a function that corresponds to the command type and
// building that command's SQL. This lets the SQL generation stay granular // is for building that command's SQL. This lets the SQL syntax builds
// and flexible across various database systems. // stay granular across various database systems.
if (method_exists($grammar, $method = $command->type)) if (method_exists($grammar, $method = $command->type))
{ {
$statements = $grammar->$method($table, $command); $statements = $grammar->$method($table, $command);
// Once we have the statements, we will cast them to an array even though // Once we have the statements, we will cast them to an array even
// not all of the commands return an array just in case the command // though not all of the commands return an array just in case it
// needs multiple queries to complete its database work. // needs multiple queries to complete.
foreach ((array) $statements as $statement) foreach ((array) $statements as $statement)
{ {
$connection->statement($statement); $connection->statement($statement);
......
...@@ -28,9 +28,6 @@ class MySQL extends Grammar { ...@@ -28,9 +28,6 @@ class MySQL extends Grammar {
// of the table as they're added in separate commands. // of the table as they're added in separate commands.
$sql = 'CREATE TABLE '.$this->wrap($table).' ('.$columns.')'; $sql = 'CREATE TABLE '.$this->wrap($table).' ('.$columns.')';
// MySQL supports various "engines" for database tables. If an engine was
// specified by the developer, we will set it after adding the columns
// the table creation statement the schema.
if ( ! is_null($table->engine)) if ( ! is_null($table->engine))
{ {
$sql .= ' ENGINE = '.$table->engine; $sql .= ' ENGINE = '.$table->engine;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment