Как изменить подключение нетерпеливой загрузки? - PullRequest
1 голос
/ 09 мая 2020

Это мои модели

class Posts extends Model {
    protected $connection = 'connection_1';

    public function comments()
    {
        $model = new Comments();
        $model->setConnection($this->connection);

        return $this->hasMany($model, 'comments_id');
    }

}

class Comments extends Model {
    protected $connection = 'connection_1';

    public function author()
    {
        $model = new Authors();
        $model->setConnection($this->connection);

        return $this->hasOne($model, 'id', 'authors_id');
    }

    public function post()
    {
        $model = new Posts();
        $model->setConnection($this->connection);

        return $this->hasOne($model, 'id', 'posts_id');
    }

}

class Authors extends Model {
    protected $connection = 'connection_1';

    public function comments()
    {
        $model = new Comments();
        $model->setConnection($this->connection);

        return $this->hasMany($model, 'authors_id');
    }

}

Когда я помещаю этот код в свой контроллер, модель комментариев подключена к connection_2 , но Authors пустые, я думаю, это не меняет подключение к connection_2

$posts = new Posts;
$posts->setConnection('connection_2');
$posts->load("comments.author")->get();

Как я могу динамически изменить соединения модели авторов, или почему поле Авторы пусто?

1 Ответ

0 голосов
/ 09 мая 2020

Я решил свою проблему так:

$conn   = \App\Helpers\Helper::connection($item_id);
$newPdo = \DB::connection($conn)->getPdo();
\DB::setPdo($newPdo);

$posts = \App\Posts::with("comments.author")->get();

И в моем помощнике

public static function connection($project) {
    switch($project) {
        case 01:
            return 'connection_01';
        break;
        case 02:
            return 'connection_02';
        break;
        case 03:
            return 'connection_03';
        break;
    }
} 
...