Полиморфное отношение Ларавела для нескольких баз данных - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь создать полиморфную связь между двумя таблицами базы данных.

database1: SaleReport database2: ThreadConnection

в SaleReport для базы данных1

public function relates(){
    return $this->morphMany(ThreadConnection::class, 'relation');
}

в ThreadConnection вdatabase2

public function relation(){
    return $this->morphTo();
}

Но когда я пытаюсь получить отношение типа

$salereport = App\SaleReport::find(1);
$salereport->relates


Illuminate/Database/QueryException with message 'SQLSTATE[42S02]: 
Base table or view not found: 1146 Table 'database1.thread_connections'
doesn't exist (SQL: select * from `thread_connections` where 
`thread_connections`.`relation_id` = 484694 and 
`thread_connections`.`relation_id` is not null and 
`thread_connections`.`relation_type` = App/SaleReport)'

, я также пытался определить соединение с базой данных в ThreadConnection

$ this->setConnection ('database2') -> morphTo ();

Но это тоже не сработало!

Любое предложение будет ценным

1 Ответ

0 голосов
/ 31 мая 2018

Как указано ранее в моем комментарии,

Чтение ошибки:

Base table or view not found: 1146 Table 'database1.thread_connections'

Значение Laravel ищет соединение с базой данных1 для модели ThreadConnection (база данных1 должна быть соединением по умолчанию, если модель ссылаетсядля другого соединения это должно быть установлено явно)

Добавление в ThreadConnection:

 protected $connection = 'database2';

Решит проблему.

...