HasManyTh через несколько баз данных - PullRequest
0 голосов
/ 27 мая 2020

У меня две базы данных.

wordpress: database1

mysql: database2

database1 имеет таблицу wp_posts (Post. php model)

database2 имеет таблицу news_tag (NewsTag . php модель) и издателя (Publisher. php) модель.

wp_posts has:
id
news_tag has: 
id
post_id 
publisher_id 
publishers have:
id 

Я пытаюсь получить доступ к издателю из wp_posts. Как я могу этого добиться?

В модели Post. php я пробовал что-то вроде:

    public function publisher() {
    return $this->hasManyThrough(
     Publisher::Class,
     NewsTag::Class,
     'post_id',
     'publisher_id',
     'id',
     'id',
     'id');

}

Может быть, я не могу получить доступ к нескольким базам данных в одной модели? Я получаю эту ошибку:

SQLSTATE[42S02]:
 Base table or view not found: 1146 Table 'db_news.wp_publishers' doesn't exist
 (SQL: select `wp_publishers`.*, `wp_news_tags`.`post_id` as `laravel_through_key` 
from `wp_publishers` inner join `wp_news_tags` on `wp_news_tags`.`id` = 
`wp_publishers`.`publisher_id` where `wp_news_tags`.`post_id` in (?) and 
`wp_publishers`.`deleted_at` is null and `wp_news_tags`.`deleted_at` is null)

1 Ответ

0 голосов
/ 28 мая 2020

Если соединение двух баз данных правильное, как указано в комментариях (если нет, вы можете увидеть @Abdulla Nilam ответ , он описывает, как настроить несколько подключений к базе данных), тогда единственная проблема - ваша имя таблицы не подбирается Laravel.

Попробуйте определить его вручную:

class Publisher extends Model
{
    /**
 * The table associated with the model.
 *
 * @var string
 */
protected $table = 'wp_publishers';

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...