【问题标题】:Laravel different file for DB connectionsLaravel 用于数据库连接的不同文件
【发布时间】:2015-11-17 22:35:49
【问题描述】:

Laravel 使用config/database.php 定义数据库连接,

我有其他数据库连接,我想将这些连接存储在config/other.php

在模型中或通过函数使用后
$model->setConnection(config('other.fisrt_connection'))

但我没有这样做。

可以在 laravel 5.1 中从另一个配置文件设置连接吗?

还有,当设置了数据库连接时,如何将此连接传递给关系模型?

【问题讨论】:

  • 为什么要将它放在不同的文件中?
  • @JosephSilber 我知道这很简单,但我需要为每个连接添加一些数据,例如描述等。
  • @TheAlpha hmm 没明白,它仍在使用 config/database.php

标签: php laravel laravel-5 eloquent


【解决方案1】:

多数据库连接

如果您的应用程序需要与多个 DB 交互,您可以在 app/config/database.php 文件中定义所有必需的 DB 详细信息。不建议添加其他配置文件。

     'connections' => array(
             'mysql1' => array(         // mysql1 -> connection_name
               'driver'    => 'mysql',
               'host'      => 'localhost',
               'database'  => 'example',
               'username'  => 'example',
               'password'  => 'example',
               ..
           ),
             'mysql2' => array(         // mysql2 -> connection_name
               'driver'    => 'mysql',
               'host'      => 'localhost',
               'database'  => 'example2',
               'username'  => 'example2',
               'password'  => 'example2',
               ..
          ),
       ),

在编写查询时,您同样可以连接到所需的数据库:

如果查询生成器

$users = DB::connection('connection_name')->select(...);

口才

模型内:

class User extends Eloquent {    
    protected $connection = 'connection_name';    
}

当尝试获取值时使用如下

$userModel = new User();
$userModel->setConnection('connection_name');
$result = $userModel->newQuery()->find(1);

Laraveldoc

希望这能让你开始。

【讨论】:

    【解决方案2】:

    请将所有数据库连接设置写入database.php。 因为所有的 DB 方法都引用了这个文件。

    也可以有选择地使用多个数据库连接。 更多信息请参考手册页。

    http://laravel.com/docs/5.1/database#accessing-connections

    但是,如果您想使用绝对其他的文件,则需要对 Laravel 的代码进行一些修改。 不推荐。

    【讨论】:

      猜你喜欢
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 2014-02-26
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 2019-03-09
      相关资源
      最近更新 更多