Ésta es la estructura que he pensado inicialmente para la base de datos. De momento sólo están las tablas necesarias para lo más básico (los datos de los animales de la protectora). Posteriormente añadiré más tablas para más funcionalidades. Aún así, es muy probable que estas tablas sufran cambios hasta llegar a la versión 1.0.
Laravel utiliza PDO, por lo que puede funcionar con diversos sistemas de gestión de bases de datos, incluyendo MySQL, PostgreSQL y SQLite. En mi caso voy a utilizar una base de datos MySQL, que ya he creado. Para configurar Laravel para que la utilice, se edita el fichero app/config/database.php
.
Observo que ya está puesto que use MySQL por omisión
'default' => 'mysql',
así que sólo hay que suministrar los datos de conexión
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'androcles',
'username' => 'quique',
'password' => 'topsecret',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
Ahora hay que crear la estructura de la base de datos. Laravel incluye una clase, Schema, que permite manipular tablas en diversos RDBMS. También incluye Migrations, unos scripts en PHP que permiten construir o modificar la base de datos guardando un registro de los cambios.
Quiero definir una tabla para almacenar los datos de los animales de la protectora. Para ello ejecuto
php artisan migrate:make create_animals --create=animals
que crea el fichero app/database/migrations/2014_03_13_135630_create_animals.php
. Este fichero contiene dos métodos: up()
y down()
. En up()
se indica lo que queremos hacer (por ejemplo crear una tabla con ciertas columnas) y en down()
cómo deshacerlo. Por ejemplo:
public function up()
{
Schema::create('animals', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->integer('species_id')->unsigned();
$table->foreign('species_id')->references('id')->on('species');
$table->integer('sex_id');
$table->string('breed');
$table->date('dateofbirth');
$table->date('datebroughtin');
$table->date('dateofexit');
$table->text('comments');
$table->boolean('neutered');
$table->integer('color_id')->unsigned();
$table->foreign('color_id')->references('id')->on('colors');
$table->integer('coat_id')->unsigned();
$table->foreign('coat_id')->references('id')->on('coats');
$table->integer('status_id')->unsigned();
$table->foreign('status_id')->references('id')->on('status');
$table->string('youtube');
$table->string('provenance');
$table->string('deliverer');
$table->string('size');
$table->string('weight');
$table->string('chipcode');
$table->text('vaccinations');
$table->text('diseases');
$table->text('surgeries');
$table->text('treatment');
$table->text('privatecomments');
$table->timestamps();
});
}
public function down()
{
Schema::drop('animals');
}
Una vez creada la plantilla podemos ejecutar
php artisan migrate
que ejecuta los metodos up()
de todas las migraciones, si todavía no se habían ejecutado. La orden
php artisan migrate --pretend
nos dice qué es lo que se ejecutará al ejecutar la migración.
php artisan migrate:rollback
deshace la última migración, y
php artisan migrate:reset
deshace todas las migraciones.