Полиморфное отношение Laravel для нескольких баз данных

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

database1: SaleReport база данных2: ThreadConnection

в разделе SaleReport в базе данных1

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

на ThreadConnection в базе данных2

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 ();

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

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

Вы пытались установить protected $ connection = 'database2'; в модели ThreadConnection?

koalaok 29.05.2018 16:27

Я думаю, здесь уже ответили, что вы ищете: stackoverflow.com/questions/25142968/…

koalaok 29.05.2018 16:54

Привет @koalaok, Спасибо, да, я сделал, что добавил защищенное соединение $ connection = 'db1 / db2' в обеих моделях, принадлежащих базам данных, и имена таблиц, защищенные $ table = 'table_names', и это сработало как шарм, это было действительно хорошо, что так легко установить связь между двумя базами данных с помощью полиморфных отношений.

Shamsul Alam 31.05.2018 09:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
3
138
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как указывалось ранее в моем комментарии,

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

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

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

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

 protected $connection = 'database2';

Решим вопрос.

Другие вопросы по теме