Laravel How to Connect Multiple Databases Simultaneously
- 2021-12-13 16:37:10
- OfStack
Preface
In the article above, we talked about thinkphp 3.2 connecting two databases at the same time, and then summarized laravel connecting at the same time
Multiple database instances for novice learning, db connection and model connection.
Configure the. env file
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=root
DB_PASSWORD=root
DB_HOST_TEST=127.0.0.1
DB_PORT_TEST=3306
DB_DATABASE_TEST=database_test
DB_USERNAME_TEST=root
DB_PASSWORD_TEST=root
Configuring config/database. php
// Default connection mysql
'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => database_path('database.sqlite'),
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'database_name'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'root'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
'mysql_test' => [
'driver' => 'mysql',
'host' => env('DB_HOST_TEST', '127.0.0.1'),
'port' => env('DB_PORT_TEST', '3306'),
'database' => env('DB_DATABASE_TEST', 'database_test'),
'username' => env('DB_USERNAME_TEST', 'root'),
'password' => env('DB_PASSWORD_TEST', 'root'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
],
model instance (this model will use mysql_test connection)
<?php
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class Test extends Model
{
// Database 'database_test' In test Table
public $table = 'test';
public $timestamps = false;
protected $connection = 'mysql_test';
}
model instance (this model will use the default 'mysql' connection)
<?php
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class Test extends Model
{
// Database 'database' In test Table
public $table = 'test';
public $timestamps = false;
// The following code can be used or not, and the default connection mysql
protected $connection = 'mysql';
}
a , this model The default 'mysql' Connect
class UserModel extends Model
{
// Database 'database' In users Table
protected $table = "users";
}
b ,
Calling an model instance
// Here's how to call the method
Test::get();
Test::where('id',1)->first();
DB Direct Connection to Database
// Connect mysql_test Library
DB::connection('mysql_test')->table('test')->where('id',1)->first();
// Connect mysql Library
DB::connection('mysq')->table('test')->where('id',1)->first();
// Connect mysql Library
DB::table('test')->where('id',1)->first();
Summarize