Maison > cadre php > Laravel > le corps du texte

Explication détaillée de la façon dont Laravel utilise plusieurs bases de données (avec des exemples de code)

藏色散人
Libérer: 2021-10-29 15:04:42
avant
2555 Les gens l'ont consulté

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
Copier après la connexion

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'),],
Copier après la connexion

注意:mysql2 中,如果 db_usernamedb_password 相同, 那么你可以使用  env('DB_USERNAME')


模式

要指定使用哪个连接,只需使用 connection() 方法

Schema::connection('mysql2')->create('some_table', function($table){
    $table->increments('id'):});
Copier après la connexion

查询生产器

$users = DB::connection('mysql2')->select(...);
Copier après la connexion

模型

在模型中设置 $connection变量。

class SomeModel extends Eloquent {

    protected $connection = 'mysql2';}
Copier après la connexion

你也可以在运行时通过 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;
    }}
Copier après la connexion

注意 在尝试与跨数据库的表建立关系时要小心! 可以这样使用,但是它可能带有一些注意事项,并且取决于您拥有的数据库与数据库设置。


来自 Laravel Docs

使用多个数据库连接

当使用多个连接时,您可以通过 DB门面类上的连接方法访问每个连接。传递给 connection 方法的名称应该对应于 config/database.php 配置文件中列出的一个连接:

$users = DB::connection('foo')->select(...);
Copier après la connexion

您还可以使用连接实例上的 getPdo (testé basé sur 5.5 Laravel 8 également disponible)

dans le fichier .env

$pdo = DB::connection()->getPdo();
Copier après la connexion
dans Fichier config/database.php 🎜🎜rrreee
🎜🎜Remarque :🎜 Dans mysql2, si db_username et db_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éthode connection() 🎜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éthode setConnection ou la méthode statique on : 🎜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éthode getPdo 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!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal