我正在使用Laravel,并为学校类提供了一个mysql表。每个类可以有多个日期,不断添加,可以在哪里发生。简单的解决方案是创建一个多对多表,其中有类和 date 。 class_id 会链接到类表但是日期?创建一个包含日期的新表是没用的,因为,正好是日期(yyyy-mm-dd)的一部分,没有要添加的细节或主键。
事实上,我正考虑在 classes 专栏中添加逗号内容,但我知道这不是一个好的解决方案。
我该怎么办?
答案 0 :(得分:0)
我建议使用one-to-many
关系。因为一个班级可以有几个日期。
如果你有任何想法,当多对多会更好 - 请分享。
答案 1 :(得分:0)
使用逗号的解决方案实际上是错误的,您可以使用L5帮助程序来修改“返回的字符串”,然后更新它,但这是非常糟糕的做法。这是可行!
两个类可能在同一日期,这意味着数据库中有更多日期。这完全取决于有多少课程。如果OP有50k(随机数来证明很多)类,这肯定是一个问题。
由于您与documentation之间存在多对多关系,因此请查看您拥有的选项。
我检查了你,你最终会得到3张牌桌:classes
,class_date
,dates
。注意表命名约定。
创建自己的迁移,例如参见数据透视表迁移:
public function up()
{
Schema::create('class_date', function(Blueprint $table)
{
$table->increments('id');
$table->integer('class_id')->unsigned()->index();
$table->foreign('class_id')->references('id')->on('classes')->onDelete('cascade');
$table->integer('date_id')->unsigned()->index();
$table->foreign('date_id')->references('id')->on('dates')->onDelete('cascade');
//$table->timestamps(); //I you may turn on the timestamps created_at, updated_at
});
}
public function down()
{
Schema::drop('class_date');
}
根据文档更改模型,您可以全功率使用Eloquent。
这完全取决于你将有多少记录 - 很多:使用M-N关系,否则为1-N。
评论是否需要更多指南。