获取多个数据库连接的多对多关系数据

时间:2018-02-22 16:05:38

标签: laravel eloquent many-to-many relationship laravel-eloquent

  • Laravel版本:5.5。
  • PHP版本:“> = 7.0.0”,
  • 数据库驱动程序&版本:MySQL

说明

我正在使用具有不同架构的多个数据库连接。 host1host2。我的默认数据库连接是host2。 我的项目有两个表。用户存在于host1上,任务存在于host2上。

两个表都有很多关系。此关系的数据透视表是task_users,它存在于host2上。

我的模型文件在这里。

  

user.php的

class User extends Authenticatable
{

   protected $connection = 'host1';

   public function tasks()
   {
       return $this->belongsToMany(Task::class, 'task_users', 'user_id', 'task_id');
   }
}
  

Task.php

class Task extends Model
{
    protected $connection = 'host2';

    public function users()
    {
        return $this->belongsToMany(User::class, 'task_users', 'task_id', 'user_id');
    }
}

重现步骤:

这就是我想要做的

$task = Task::find($taskId); $task->users;

使用此模型文件,当我尝试获取任务的用户时,我收到此错误。

  

Illuminate \ Database \ QueryException,消息'SQLSTATE [42P01]:未定义表:7错误:“task_user”关系不存在

但是如果我按照这样做反转:

$user = User::find($userId); $user->task; 一切都很顺利。

我几乎花了太多时间来解决这个问题。但无论如何都没有得到。我不知道这是laravel中的问题,不支持还是我做错了。

1 个答案:

答案 0 :(得分:0)

指定连接

public function users()
{
    return $this->belongsToMany(User::class, 'host2.task_users', 'task_id', 'user_id');
}