La colonne tutorielle suivante de Laravel vous présentera comment utiliser plusieurs bases de données dans Laravel. J'espère qu'elle vous sera utile !
Utilisez .env
>= 5.0.env
>= 5.0 (测试基于 5.5 Laravel 8 也可用)
在 .env
文件
DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=database1DB_USERNAME=rootDB_PASSWORD=secretDB_CONNECTION_SECOND=mysqlDB_HOST_SECOND=127.0.0.1DB_PORT_SECOND=3306DB_DATABASE_SECOND=database2DB_USERNAME_SECOND=rootDB_PASSWORD_SECOND=secret
在 config/database.php
文件
'mysql' => [ 'driver' => env('DB_CONNECTION'), 'host' => env('DB_HOST'), 'port' => env('DB_PORT'), 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD'),],'mysql2' => [ 'driver' => env('DB_CONNECTION_SECOND'), 'host' => env('DB_HOST_SECOND'), 'port' => env('DB_PORT_SECOND'), 'database' => env('DB_DATABASE_SECOND'), 'username' => env('DB_USERNAME_SECOND'), 'password' => env('DB_PASSWORD_SECOND'),],
注意: 在
mysql2
中,如果db_username
和db_password
相同, 那么你可以使用env('DB_USERNAME')
。
模式
要指定使用哪个连接,只需使用 connection()
方法
Schema::connection('mysql2')->create('some_table', function($table){ $table->increments('id'):});
查询生产器
$users = DB::connection('mysql2')->select(...);
模型
在模型中设置 $connection
变量。
class SomeModel extends Eloquent { protected $connection = 'mysql2';}
你也可以在运行时通过 setConnection
方法或 on
静态方法定义连接:
class SomeController extends BaseController { public function someMethod() { $someModel = new SomeModel; $someModel->setConnection('mysql2'); // non-static method $something = $someModel->find(1); $something = SomeModel::on('mysql2')->find(1); // static method return $something; }}
注意 在尝试与跨数据库的表建立关系时要小心! 可以这样使用,但是它可能带有一些注意事项,并且取决于您拥有的数据库与数据库设置。
使用多个数据库连接
当使用多个连接时,您可以通过 DB
门面类上的连接方法访问每个连接。传递给 connection
方法的名称应该对应于 config/database.php
配置文件中列出的一个连接:
$users = DB::connection('foo')->select(...);
您还可以使用连接实例上的 getPdo
(testé basé sur 5.5 Laravel 8 également disponible)
dans Fichier config/database.php 🎜🎜rrreeedans le fichier
.env
$pdo = DB::connection()->getPdo();Copier après la connexion
🎜🎜Remarque :🎜 Dansmysql2
, sidb_username
etdb_password code> est le même, alors vous pouvez utiliser <code>env('DB_USERNAME')
. 🎜🎜
🎜🎜Mode🎜🎜🎜Pour spécifier quelle connexion utiliser, utilisez simplement la méthodeconnection()
🎜rrreee🎜🎜Interrogez le producteur 🎜🎜rrreee🎜🎜Modèle 🎜🎜🎜 dans le modèle Définissez la variable$connection
dans. 🎜rrreee🎜Vous pouvez également définir la connexion au moment de l'exécution via la méthodesetConnection
ou la méthode statiqueon
: 🎜rrreee🎜🎜Remarque🎜 Lorsque vous essayez d'établir une croix -table de base de données Soyez prudent en ce qui concerne les relations ! Cela peut être utilisé, mais cela peut comporter quelques mises en garde et dépend de la base de données et de la configuration de la base de données dont vous disposez. 🎜🎜
🎜🎜Depuis Laravel Docs
🎜🎜Utilisation de plusieurs connexions à la base de données🎜🎜🎜Lorsque vous utilisez plusieurs connexions, vous pouvez transmettre la 🎜DB
🎜classe de façade La connexion La méthode sur chaque connexion est accessible. Le nom passé à la méthode 🎜connection
🎜 doit correspondre à une connexion listée dans le fichier de configuration 🎜config/database.php
🎜 : 🎜rrreee🎜 Vous pouvez également utiliser une connexion instance La méthodegetPdo
accède à l'instance PDO sous-jacente d'origine : 🎜rrreee🎜🎜Adresse d'origine : https://stackoverflow.com/questions/31847054/how-to-use-multiple-databases-in- laravel 🎜🎜Adresse de traduction : https://learnku.com/laravel/t/62110🎜🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!