Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 如何更改即时加载的连接?_Laravel_Eager Loading - Fatal编程技术网

Laravel 如何更改即时加载的连接?

Laravel 如何更改即时加载的连接?,laravel,eager-loading,Laravel,Eager Loading,这些是我的模型 class Posts extends Model { protected $connection = 'connection_1'; public function comments() { $model = new Comments(); $model->setConnection($this->connection); return $this->hasMany($model, '

这些是我的模型

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');
    }

}
当我将此代码放入控制器时,注释模型连接到连接_2,但作者为空,我猜它不会将连接更改为连接_2

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

如何更改dinamically Authors模型连接,或者为什么Authors为空?

我已解决了以下问题:

$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;
    }
} 

我已经这样解决了我的问题:

$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;
    }
}