mysql - 与变量表的一对多关系

标签 mysql sql laravel eloquent relationships

所以,我有一个电视节目的网站,目前有以下表格结构(仅列出相关列):

Table 1 - TV Shows
id

Table 2 - Episodes
id

Table 3 - Comments 
target
value

电视节目和剧集都可以有评论,因此“目标”列指定它是“电视节目”还是“剧集”评论,“值”列指定其 ID。

我已经考虑过合并这两列并使用“x_ID”(“tvshow_id”或“episode_id”,例如:“tvshow_45”或“episode_9458”)。

但我真正想知道的是:最好的方法是什么?使用我描述的两种方式,我都无法使用外键(我不知道这样做的好处,但我想它很好)。另一个问题是使用 Laravel 的 Eloquent 功能...

我可以创建两个评论表,但我不知道这是否是唯一或最好的方法......

有人可以帮我解决这个问题吗?

提前谢谢您。

加布。

最佳答案

它在 Laravel 中的工作方式是使用 commentable_* 列:

id, commentable_id, commentable_type, value

然后你使用a polymorphic relationship ,以便 Eloquent 为您处理这一切。

<小时/>

如果您正在使用迁移,laravel 可以为您生成这些列:

Schema::create('comments', function($table)
{
    $table->increments('id');
    $table->morphs('commentable');
    $table->string('value');
});

它甚至会自动为您创建一个复合索引!

关于mysql - 与变量表的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25173065/

相关文章:

MySql/Cloudbees VARCHAR 作为外键

mysql - 某个日期范围内的 COUNT CASE 函数

sql - 复制具有主从关系的多条记录

php - 在 Laravel 5.4 的浏览器中预览 Mailables 时出错

mysql - 由于在 MySQL 中使用保留字作为表名或列名而导致的语法错误

mysql - Rails 2 和 MySQL

MySQL 错误 1103

sql - 远程Mysql服务器上的Groovy SQL错误?

javascript - VueJs : Focus on Input using v-el Directive inside v-repeat Directive

php - 我怎样才能在 laravel 中获得社交名媛的原始头像?