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