Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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
Php 在laravel 4中,是否有办法为同一功能下的所有连接设置db连接设置?_Php_Laravel_Laravel 4_Eloquent - Fatal编程技术网

Php 在laravel 4中,是否有办法为同一功能下的所有连接设置db连接设置?

Php 在laravel 4中,是否有办法为同一功能下的所有连接设置db连接设置?,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,假设我在app/config/database.php中有以下数据库设置 'default' => 'mysql', 'connections' => array( # Our primary database connection 'mysql' => array( 'driver' => 'mysql', 'host' => 'host1', 'database' =>

假设我在app/config/database.php中有以下数据库设置

'default' => 'mysql',

'connections' => array(

    # Our primary database connection
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'host1',
        'database'  => 'database1',
        'username'  => 'user1',
        'password'  => 'pass1'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

    # Our secondary database connection
    'mysql2' => array(
        'driver'    => 'mysql',
        'host'      => 'host2',
        'database'  => 'database2',
        'username'  => 'user2',
        'password'  => 'pass2'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),
),
从laravel的官方指南中,有几种方法可以选择要使用的连接设置。或者在我需要连接时设置它

$users = DB::connection('mysql2')->select(...);
或者在模型中设置它:

class SomeModel extends Eloquent {

    protected $connection = 'mysql2';

}
在我的例子中,我为不同的用户复制了具有相同模式的数据库,因此不可能在模型中设置它。是否有一种方法可以为同一功能下的所有连接选择连接设置,以便我可以将其放入filter/baseController并在运行时设置连接?

这里是第三种解决方案(最后一种):


因此,您可以将连接名称传递到函数中或在控制器中进行设置。

一个选项是更新“database.default”键并重新连接:

Config::set('database.default', 'mysql2');
DB::reconnect();

只需执行此操作,即可将默认连接更改为“mysql2”

DB::setDefaultConnection('mysql2');

上一个解决方案仅更改了该模式下的连接设置。如果我连接了不同的型号,我仍然需要重新设置。这比每次设置都好,但我想要一个一劳永逸的解决方案。