Laravel,为一种方法更改模型中的连接?

Mar*_*all 4 php laravel

我有一个开发数据库和一个实时数据库。我需要从实时数据库中返回一些结果,但仅针对此模型中的一种方法。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class TableName extends Model
{
    protected $table = 'table_name';

    protected $connection = 'dev';

    public $timestamps = false;

    public static function live($index) {

        $liveId = Settings::where('index', $index)->get()[0];

        $live = new TableName;

        $live->setConnection('live');

        $data = $live::where('index', $liveId->live_index)->get();

        dd($live);

        return $data;

    }
}
Run Code Online (Sandbox Code Playgroud)

如果我dd()$live打完电话后变量setConnection然后它说,连接确实live。但是,只要我dd()$data我从一开始的行开发数据库!

Geo*_*son 8

Eloquent 提供了一种处理多个连接的好方法。

您应该能够使用该on方法。例如。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class TableName extends Model
{
    protected $table = 'table_name';

    protected $connection = 'dev';

    public $timestamps = false;

    public static function live($index) {

        $liveId = Settings::where('index', $index)->get()[0];

        $data = self::on('live')->where('index', $liveId->live_index)->get();

        return $data;

    }
}
Run Code Online (Sandbox Code Playgroud)

然后应该使用live数据库配置中的连接运行查询。