使用旧式数据库,我必须处理以下结构: -database_a有一个表“ Articles” -database_b有两个表'Tags'和'ArticlesTags'
我将database_a配置为“默认”连接,将database_b配置为“第二”连接。然后,我烘焙了Articles,Tags模型以及ArticlesTags模型。对于标签模型和ArticlesTags模型,我添加了“ -c second”作为烘焙选项。尽管如此,关联仅部分被自动检测到,因此我不得不手动配置它们:在ArticlesTable和TagsTable中,我都将一个AboutToMany关联配置为Tag和。带有以下选项的文章:'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';
}
在akesTagsTable中,bake已经建立了两个Tags和Articles的belongsTo关联。在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'不存在”,这是正确的,因为表articles_tags不在database_a中,而在database_b中。
如何获取标签的相关文章?我想念某事吗?配置?还是这可能是ORM中的错误?