Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Laravel-如何实现从数据库的数据库连接_Database_Laravel_Connection_Replication_Slave - Fatal编程技术网

Database Laravel-如何实现从数据库的数据库连接

Database Laravel-如何实现从数据库的数据库连接,database,laravel,connection,replication,slave,Database,Laravel,Connection,Replication,Slave,正如上面的标题,出于某种原因,我需要连接到从属数据库 但我找不到怎么做 下面是我的数据库配置: 'mysql' => [ 'read' => [ 'host' => env('DB_SLAVE', '127.0.0.1'), 'port' => env('DB_SLAVE_PORT', '3306'), 'username' => env('DB_SLAVE_USERNAME', 'root'),

正如上面的标题,出于某种原因,我需要连接到从属数据库

但我找不到怎么做

下面是我的数据库配置:

'mysql' => [
    'read' => [
        'host' => env('DB_SLAVE', '127.0.0.1'),
        'port' => env('DB_SLAVE_PORT', '3306'),
        'username'  => env('DB_SLAVE_USERNAME', 'root'),
        'password'  => env('DB_SLAVE_PASSWORD', 'pwdforslave'),
    ],
    'write' => [
        'host' => env('DB_MASTER', '127.0.0.1'),
        'port' => env('DB_MASTER_PORT', '3308'),
        'username'  => env('DB_MASTER_USERNAME', 'masteruser'),
        'password'  => env('DB_MASTER_PASSWORD', 'pwdformaster'),
    ],
    'driver'    => 'mysql',
    'database'  => 'amazingapp',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => 'aa_',
    'strict' => false,
    'engine' => env('DB_ENGINE', 'InnoDB'),
    'unix_socket' => env('DB_SOCKET', ''),
],  

要连接从数据库,目前我想的是DB::connection'mysql.slave'


但它不起作用。

您的意思是在database.php中创建新的数据库连接条目,并通过DB::connection'mysql2'使用统计方法连接

也许你可以查看这个链接

您可以尝试此配置

'mysql' => [
    'read' => [
        'host' => env('DB_SLAVE', '127.0.0.1'),
        'port' => env('DB_SLAVE_PORT', '3306'),
        'username'  => env('DB_SLAVE_USERNAME', 'root'),
        'password'  => env('DB_SLAVE_PASSWORD', 'pwdforslave'),
    ],
    'write' => [
        'host' => env('DB_MASTER', '127.0.0.1'),
        'port' => env('DB_MASTER_PORT', '3308'),
        'username'  => env('DB_MASTER_USERNAME', 'masteruser'),
        'password'  => env('DB_MASTER_PASSWORD', 'pwdformaster'),
    ],
    'driver'    => 'mysql',
    'database'  => 'amazingapp',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => 'aa_',
    'strict' => false,
    'engine' => env('DB_ENGINE', 'InnoDB'),
    'unix_socket' => env('DB_SOCKET', ''),
],  

'mysql_master' => [
    'host' => env('DB_MASTER', '127.0.0.1'),
    'port' => env('DB_MASTER_PORT', '3308'),
    'username'  => env('DB_MASTER_USERNAME', 'masteruser'),
    'password'  => env('DB_MASTER_PASSWORD', 'pwdformaster'),
    'driver'    => 'mysql',
    'database'  => 'amazingapp',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => 'aa_',
    'strict' => false,
    'engine' => env('DB_ENGINE', 'InnoDB'),
    'unix_socket' => env('DB_SOCKET', ''),
],  

'mysql_slave' => [
    'host' => env('DB_SLAVE', '127.0.0.1'),
    'port' => env('DB_SLAVE_PORT', '3306'),
    'username'  => env('DB_SLAVE_USERNAME', 'slaveuser'),
    'password'  => env('DB_SLAVE_PASSWORD', 'pwdforslave'),
    'driver'    => 'mysql',
    'database'  => 'amazingapp',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => 'aa_',
    'strict' => false,
    'engine' => env('DB_ENGINE', 'InnoDB'),
    'unix_socket' => env('DB_SOCKET', ''),
],  

所以,如果想要连接到从服务器,只需使用DB::connection'mysql_slave'

您可以在.env上进行多个DB连接,而无需接触database.php

这就是我连接多数据库连接的方式

 DB_CONNECTION=mysql
 DB_HOST=localhost
 DB_PORT=3306
 DB_DATABASE=sample
 DB_USERNAME=root
 DB_PASSWORD=123456


 DB_CONNECTION=mysql1
 DB_HOST=localhost
 DB_PORT=3306
 DB_DATABASE=sample
 DB_USERNAME=root
 DB_PASSWORD=123456
当你想在你的代码上调用它时,如protrafree所述

像这样的

  DB::connection('mysql')


我认为不复制/粘贴相同的配置有一种更简单的方法。。。。但是如果没有更简单的方法,那么我想我会把你的答案标记为正确的…@SyamsoulAzrien没有比这更简单的方法了Pwait…我们可以在.env中设置重复变量???我不这么认为。。。
   DB::connection('mysql1')