====== Database ======
La configuration des bases de données se trouvent dans le fichier **app/config/database.php**
Définissez votre connexion par défaut
'default' => 'mysql',
'connections' => array(
'sqlite' => array(
'driver' => 'sqlite',
'database' => __DIR__.'/../database/production.sqlite',
'prefix' => '',
),
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mybdd',
'username' => 'moi',
'password' => 'blabla',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'myproject_',
),
'pgsql' => array(
'driver' => 'pgsql',
'host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
),
'sqlsrv' => array(
'driver' => 'sqlsrv',
'host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => '',
'prefix' => '',
),
),
===== Pour plusieurs base de données =====
Même principe, configurez autant de connexion que vous le voulez
'default' => 'mysql',
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mybdd',
'username' => 'moi',
'password' => 'blabla',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'myproject_',
),
'mysql2' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mybdd2',
'username' => 'moi',
'password' => 'blabla',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'myproject_',
),
'mysql3' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mybdd3',
'username' => 'moi',
'password' => 'blabla',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'myproject_',
),
'pgsql' => array(
'driver' => 'pgsql',
'host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
),
),
Ensuite, dans votre code, vous pouvez spécifier votre connexion comme ceci pour les query builder
$user = DB::connection('mysql3')->table('users')->where('id', '=', 1)->first();
ou
$user = User::on('connection-name')->find(1);
Dans les models eloquent
class Toto extends Eloquent {
protected $connection = 'mysql2';
}
===== Débugguer =====
Don't use ->toSql() for debugging. Use DB::getQueryLog() instead
http://forumsarchive.laravel.io/viewtopic.php?id=16874
===== Laravel 5.3 : error =====
Si vous avez ce genre d'erreur, pour une requête toute banale
>>> \App\Charge::where('id','>',40)->groupBy('gid')->get()
Illuminate\Database\QueryException with message 'SQLSTATE[42000]: Syntax error or access violation: 1055 'dev.charges.id' isn't in GROUP BY (SQL: select * from `charges` where `id` > 40 group by `gid`)'
>>>
Il suffit de modifier la config ''strict => false'' de votre connexion mysql
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'dev'),
'username' => env('DB_USERNAME', ''),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],