Laravel 4 - 连接到其他数据库
我有时想连接到另一个数据库。
我创建了一个包含数据库连接数据的配置.php。
但是我怎么能告诉laravel连接到这个数据库,而不是使用config/database.php?
例如,在使用类时。Schema
因为似乎没有人理解我想要什么。
我不想使用配置/数据库.php,我想在不同的位置使用不同的配置文件。
我有时想连接到另一个数据库。
我创建了一个包含数据库连接数据的配置.php。
但是我怎么能告诉laravel连接到这个数据库,而不是使用config/database.php?
例如,在使用类时。Schema
因为似乎没有人理解我想要什么。
我不想使用配置/数据库.php,我想在不同的位置使用不同的配置文件。
听起来你已经想通了。以下是我如何为其他人完成它,或者以防万一有用的东西在这里为你。
首先,在 中添加第二个连接。注: 该文件路径可能会根据您的环境而变化。app/config/database.php
<?php
return array(
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'database1',
'username' => 'user1',
'password' => 'pass1'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'mysql2' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'database2',
'username' => 'user2',
'password' => 'pass2'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
其次,在代码中,您可以使用(如前所述)第二个连接::
Schema::connection('mysql2')->create('users', function($table) {})
有更多关于此内容的文档 - 请参阅访问连接。
雄辩的ORM您可以在一个雄辩的类中定义“connection”的变量,以设置使用哪个连接。这在“基本用法”部分中进行了说明。
在Github上看到这个变量,以及你可以设置它来动态设置连接的方法。
编辑OP已经明确表示,他们不希望使用config/database.php文件进行配置。
但是,如果不进一步解释,我无法发表评论。我很乐意提供帮助 - 听起来知道为什么不能/不应该使用config/database.php文件会很有用,因为这可以帮助我们确定问题并创建一个有用的解决方案。
我相信你想实现某种逻辑分片,其中数据库将被动态创建。
在 laravel 的此类方案中,您可以动态添加数据库配置,如下所示
$conn = array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'DATABASE',
'username' => 'USERNAME',
'password' => 'SOME_PASSWORD',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
);
Config::set('database.connections.DB_CONFIG_NAME', $conn);
现在通过雄辩的方式连接
MODEL::on('DB_CONFIG_NAME')->WHAT_EVER('1');
在查询生成器的情况下,您可以做
$DB = DB::connection('DB_CONFIG_NAME');
立即用于查询。$DB->select()
希望这将有助于开发人员为这个问题寻找可能的解决方案