我有两个模型 - 用户和公告,它们分别存在于两个不同的连接 - mysql
和intranet
。用户模型hasMany
公告和公告belongsTo
单个用户。
在公告模型中,我有protected $connection = 'intranet'
,在用户模型中我有protected $connection = 'mysql'
。最初我没有在User模型上指定$connection
属性,因为它是应用程序的默认属性,但是将其添加进行测试。
执行任何类型的查询都能正常工作。作为一个例子,这些工作:
User::find(1)->announcements()->where('name', 'something')->get()
Announcement::find(2)->user
但是,在Announcements模型上使用whereHas
时,我收到以下SQL错误:Base table or view not found: 1146 Table 'intranet.associate'
- associate
是用户的表,而intranet
是公告模型中指定的数据库连接。
虽然我确实找到了问题here的答案。不过,我很好奇,为什么你需要使用->from(..)
。这是预期的功能吗?我在文档中找不到有关使用from()
的内容。
作为旁注,我能够解决这个问题"问题"通过在用户模型中的$table
方法中分配__construct
属性:
__construct(array $attributes = []) {
$this->table = env('DB_DATABASE').'.associate';
}
env('DB_DATABASE')
是默认连接的数据库。