【发布时间】:2019-04-05 17:12:28
【问题描述】:
在多对多关系模型中,我意外地反向识别了外键名称。这是在两个相关模型中完成的,因此关系有效。它正在生产中。
在Articles:
public function categories()
{
return $this->belongsToMany(ArticleCategory::class, 'article_category_article', 'article_category_id', 'article_id');
}
在ArticleCategory:
public function articles()
{
return $this->belongsToMany(Article::class, 'article_category_article', 'article_id', 'article_category_id');
}
如您所见,两个外键都颠倒了。
它不会打扰我,因为它在整个项目中都有效。在article_category_article 表中,两个值都记录在“错误”列中。
但是 if 我还是想换掉它。模型很简单,但是数据透视表呢?我尝试过 laravel 迁移:
public function up()
{
Schema::table('article_category_article', function (Blueprint $table) {
$table->renameColumn('article_id', 'temporarily');
$table->renameColumn('article_category_id', 'article_id');
$table->renameColumn('temporarily', 'article_category_id');
});
}
没有成功,它可以预见会遇到错误There is no column with name 'temporarily' on table 'article_category_article'
将其拆分为 2 个迁移文件会遇到相同的错误。
我倾向于顺其自然。问题是:可以做到吗?我假设交换列 inside MySQL(没有迁移),重新索引表和 适应模型是一种可能性。有任何想法吗?我可以在本地服务器上进行测试。
【问题讨论】:
标签: mysql laravel laravel-5 laravel-migrations