Laravel Autoschema

A database management library for the Laravel Framework

Please note this project was written for Laravel 2 and is no longer in development

Laravel is a clean and classy framework for PHP web development. Freeing you from spaghetti code, Laravel helps you create wonderful applications using simple, expressive syntax. Development should be a creative experience that you enjoy, not something that is painful. Enjoy the fresh air.

Feature Overview

  • Define Schema just using the standard larval syntax.
  • Add form helpers and validation rules to a schema.
  • Get an overview of your tables in the web interface.
  • Quickly Create, Drop and Update tables using a web interface.

A Few Examples

Define a users table:

AutoSchema::define('users', function($table)
{
    $table->increments('id');
    $table->string('forename', 255);
    $table->string('surname', 255);
    $table->string('username', 255);
    $table->string('email', 255);
    $table->string('password', 255);
    $table->boolean('active');
    $table->timestamps();
});

Add additional information:

AutoSchema::define('users', function($table)
{
    $table->increments('id');
    $table->string('forename', 255)->label('Forename')->rules('required');
    $table->string('surname', 255)->labe('Surname')->rules('required');
    $table->string('username', 255)->label('Username')->rules('required|unique');
    $table->string('email', 255)->label('Email address')->rules('required|unique|email');
    $table->string('password', 255)->label('Password');
    $table->boolean('active');
    $table->timestamps();
});

Default Routes

// Show all tables and status reports
Route::get('/autoschema', function()
{
	AutoSchema::load_definitions();
	$data['tables'] = AutoSchema::check_tables();
	return View::make('autoschema.index')->with($data);
});

// Create a table using the definition
Route::get('autoschema/create/(:any)', function($table)
{
	$result = AutoSchema::create($table);
	return Redirect::back();
});

// Drop a table from the database
Route::get('autoschema/drop/(:any)', function($table)
{
	$result = AutoSchema::drop($table);
	return Redirect::back();
});

// Update a table based on a definition
Route::get('autoschema/update/(:any)', function($table)
{
	$result = AutoSchema::update_table($table);
	return Redirect::back();
});

Core functions

Loading definitions

Load in and cache any definitions in your config/autoschema.php file. AutoSchema::load_definitions();

Creating tables

Create a table as defined in your config/autoschema.php file AutoSchema::create($table_name);

Dropping tables

Drop a table from the database. AutoSchema::drop($table_name);

Updating tables

Update a table in the database using the definition in your config/autoschema.php file AutoSchema::create($table_name);

Helper functions

Retrieving definitions to build a form

AutoSchema::get_for_form($table, $showall=false);

This function will return an array of field definitions to be used with Laravel's form methods.

Example

$fields = AutoSchema::get_for_form('users');
$html = '';
foreach($fields as $field){
	$html .= '<p class="field">';
	$html .= Form::label($field['label']);
	$html .= Form::input($field['type'], $field['name']);
	$html .= '</p>';
}
echo $html;