You are on page 1of 3

##Configuracin y uso de bases de datos en Laravel.

Laravel nos permite acceder a las bases de datos con un cdigo muy a su estilo, es
decir, de un modo 'elegante y expresivo'.

Para ello, nos proporciona un completo sistema de migraciones, un Generador de


Consultas (anteriormente llamado __Fluent__) y su propio __ORM__ llamado
__Eloquent__.

## Configurar la Base de Datos.

### Se configura en el fichero .env con estas cuatro variables:


DB_HOST=localhost
DB_DATABASE=sample
DB_USERNAME=user
DB_PASSWORD=password

### Si la base de datos tiene un puerto distinto al habitual (3306)

Indcalo a continuacin del host:


`DB_HOST=localhost:3308`

## Definir la estructura de la base de datos.

Para definir la estructura de la base de datos, podemos crear migraciones que nos
permitan gestionar esa estructura de un modo ms flexible y con un sistema de
control de versiones.

Siguiendo la filosofa de diseo de Laravel, se ha creado una convencin para


nombrar las tablas y los modelos que de acceso a esas tablas. Laravel utiliza el
'lenguaje natural' para ayudarnos a almacenar el modelo de datos. Por eso, los
nombres de las tablas deberan ser siempre el plural de los nombres de los modelos.
Por ejemplo, en el caso de un modelo llamado __'Usuario'__ la tabla se llamara
__'Usuario**s**'__. Adems, tiene ms sentido decir `SELECT name FROM useres WHERE
id=100` que `SELECT name FROM user WHERE id=100`.

##Para crear los registros, podemos usar los **seeders**.

###Los seeders a ejecutar se aaden a la clase DatabaseSeeder:

Tenemos que ir a la carpeta `database\seeds` y aadir los seeders que queremos que
se ejecuten en el fichero `DatabaseSeeder.php`

class DatabaseSeeder extends Seeder {

/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();

// Aqu aadimos los seeders a ejecutar


$this->call('UserTableSeeder');
}

###Las clases propias deben extender de Illuminate\Database\Seeder:

use Illuminate\Database\Seeder;

class UserTableSeeder extends Seeder{


/**
*
*/
public function run()
{
// Crear los datos
\DB::table('users')->insert(array(
'name' => 'Juanan',
'email'=>'jatubio@gmail.com',
'password'=>\Hash::make('clave')
));
}

###Ejecutamos las migraciones con php artisan:

`php artisan db:seed`

## Posibles Errores (Troubleshooting)

### PDOException: could not find driver

Es probable que no hayas habilitado las extensiones PDO de la base de datos que
ests usando en el fichero `php.ini`. Comprueba las siguientes lneas y descomenta
la que corresponda:

<pre>
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
</pre>

### SQLSTATE[HY000] [2002]

`PDOException in Connector.php line NN:


SQLSTATE[HY000] [2002] No se puede establecer una conexin ya que el equipo de
destino deneg expresamente dicha conexin.`

Comprueba que has configurado bien el host de tu base de datos en: `DB_HOST=`

### SQLSTATE[42S02]

`QueryException in Connection.php line NNN:


SQLSTATE[42S02]: Base table or view not found: 1146 Table 'tablesample' doesn't
exist (SQL: select xx from 'table' where 'aaa' = bbb limit 1)`
Probablemente no has creado la tabla `'tablesample'`

### [ReflectionException] Class UserTableSeeder does not exist

Si te aparece este error al ejecutar `php artisan db:seed`:

* Comprueba que la clase correspondiente existe en la carpeta `database\seeds`


`UserTableSeeder.php`
* Comprueba que la hemos includo en el fichero `database\seeds\DatabaseSeeder`
`$this->call('UserTableSeeder');`
* &&

You might also like