Laravel在模型中定义数据库

时间:2015-03-26 11:45:33

标签: laravel

我的一大块SQL保存在与Laravel安装的其余部分不同的数据库中。

当我使用特定模型时,如何在该模型中定义,我想使用特定数据库而不是config / database.php中定义的数据库?

我正在使用Laravel 5,因此需要与该版本相关。

更新:这是我的模特;

<?php namespace App\Models;

  use Illuminate\Database\Eloquent\Model;

  class Lookup extends Model {
    protected $connection = 'postcodes';
  }

以下是我config/database.php;

的一部分
'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', $_ENV["DB_HOST"]),
        'database'  => env('DB_DATABASE', $_ENV["DB_DATABASE"]),
        'username'  => env('DB_USERNAME', $_ENV["DB_USERNAME"]),
        'password'  => env('DB_PASSWORD', $_ENV["DB_PASSWORD"]),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

    'postcodes' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', $_ENV["DB_HOST"]),
        'database'  => env('DB_DATABASE', 'postcodes'),
        'username'  => env('DB_USERNAME', $_ENV["DB_USERNAME"]),
        'password'  => env('DB_PASSWORD', $_ENV["DB_PASSWORD"]),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

它无法正常工作 - 我无法让Whooops错误发挥作用,所以我得到的只是一个白屏(但这是一个单独的问题)。

我知道我的控制器代码是正确的,因为当我临时将表格复制到我的主要Laravel数据库时,一切正常。那么问题是什么?

2 个答案:

答案 0 :(得分:0)

您可以在模型中定义protected $connection = 'yourohterconnection';,并在数据库配置文件中添加另一个连接。

答案 1 :(得分:0)

我在Laravel forum上问了同样的问题,并且发布的解决方案对我有用。

基本上问题是这一行;

'database'  => env('DB_DATABASE', $_ENV["DB_DATABASE_TWO"]),

或者在撰写本文时我的代码实际上是;

'database'  => env('DB_DATABASE', 'postcodes'),

需要;

'database'  => env('DB_DATABASE_TWO', $_ENV["DB_DATABASE_TWO"]),

然后您的.env文件需要DB_DATABASE_TWO=postcodes(或者您的第二个数据库的名称)。