Laravel 5如何配置Queue数据库驱动程序以连接到非默认数据库?

时间:2016-02-21 12:11:37

标签: database laravel laravel-5 queue laravel-5.1

在Laravel 5.1中,我们可以在config/queue.php中设置队列连接配置。

QUEUE_DRIVER=database
    'database' => [
        'driver' => 'database',
        'table' => 'jobs',
        'queue' => 'default',
        'expire' => 60,
    ],

但是,它只会使用config/database.php中的默认数据库连接。

如果我有2个数据库,localhost中有1个默认数据库mysql1,远程服务器中有1个数据库mysql2,则队列jobs表位于远程数据库{{1 ,如何配置Queue数据库驱动程序以使用远程mysql2数据库?请注意,主App正在使用localhost中的默认数据库。

3 个答案:

答案 0 :(得分:22)

您可以使用'connection'中的queue.php参数来设置正确的数据库连接(来自您在database.php中定义的数据库连接)。

'database' => [ 'connection' => 'mysql2' 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', 'expire' => 60, ],

我一直在寻找同样的东西,并在源代码中找到它。

注意:这不仅会读取此连接中的作业(运行队列时),还会将它们写入此连接(分派新作业时)。

答案 1 :(得分:5)

这里最好的答案对我不起作用,并不是说它不是一个与我不同的问题的最佳答案。我的问题是Laravel没有缓存我的配置设置。

进入文件\ config \ queue.php并更改默认驱动程序...

'default' => env('QUEUE_DRIVER', 'database'),

队列仍然在同步驱动程序上运行。

然后我检查了文件......

    \bootstrap\cache\config.php

第30行我看到了......

 'queue' => 
array (
'default' => 'sync', 

...但要连接到数据库,它应该是......

 'queue' => 
array (
'default' => 'database',

这解决了这个问题......

php artisan config:cache

运行config:cache commmand将config.php文件重写为当前的驱动程序设置。

答案 2 :(得分:1)

您可以在模型中设置$connection变量。请注意,这只会影响Eloquent个查询,并且不适用于Fluid Query Builder。

class Jobs extends Eloquent {
    protected $connection = "database2"     
}

这当然要求您在named文件config/database.php中建立第二个'database2' => [...]连接。