Работая с устаревшей базой данных, мне приходится иметь дело со следующей структурой:
- база данных_a имеет таблицу «Статьи»
- database_b содержит две таблицы 'Tags' и 'ArticlesTags'
Я настроил database_a как соединение по умолчанию, а database_b как второе соединение. Затем я испекла модели для статей, тегов, а также модель статей. Для модели Tags и модели ArticlesTags я добавил опцию -c second в качестве опции выпекания. Тем не менее, ассоциации были обнаружены только частично, поэтому мне пришлось настраивать их вручную: как для ArticlesTable, так и для TagsTable я настроил ассоциацию ownToMany для тегов, соответственно. к статьям с опцией: 'trough' => 'ArticlesTags'.
В ArticlesTable:
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('articles');
$this->setDisplayField('name');
$this->setPrimaryKey('id');
$this->belongsToMany('Tags', [
'through' => 'ArticlesTags'
]);
}
В тегахТаблица:
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('tags');
$this->setDisplayField('name');
$this->setPrimaryKey('id');
$this->belongsToMany('Articles', [
'through' => 'ArticlesTags'
]);
}
public static function defaultConnectionName()
{
return 'second';
}
В разделе ArticlesTagsTable уже были созданы две ассоциации, относящиеся к тегам и статьям. В ArticlesTagsTable и TagsTable для defaultConnection также было правильно установлено значение 'second':
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('articles_tags');
$this->belongsTo('Tags', [
'foreignKey' => 'tag_id',
'joinType' => 'INNER'
]);
$this->belongsTo('Articles', [
'foreignKey' => 'article_id',
'joinType' => 'INNER'
]);
}
public static function defaultConnectionName()
{
return 'second';
}
Теперь проблема: при загрузке статьи со связанными тегами, erverythig в порядке. Но когда я пытаюсь получить тег с соответствующими статьями, я получаю сообщение об ошибке SQL «Таблица« database_a.articles_tags »не существует», которое имеет значение true, поскольку таблица article_tags находится не в database_a, а в database_b.
Как я могу получить соответствующие статьи тега? Я скучал по чему-то? настроить? Или это может быть ошибка в ORM?