我正在使用具有不同架构的多个数据库连接。 host1
和host2
。我的默认数据库连接是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中的问题,不支持还是我做错了。
答案 0 :(得分:0)
指定连接
public function users()
{
return $this->belongsToMany(User::class, 'host2.task_users', 'task_id', 'user_id');
}