将多个日期存储在mysql表中

时间:2015-03-18 15:30:33

标签: mysql laravel

我正在使用Laravel,并为学校提供了一个mysql表。每个可以有多个日期,不断添加,可以在哪里发生。简单的解决方案是创建一个多对多表,其中有 date class_id 会链接到表但是日期?创建一个包含日期的新表是没用的,因为,正好是日期(yyyy-mm-dd)的一部分,没有要添加的细节或主键。

事实上,我正考虑在 classes 专栏中添加逗号内容,但我知道这不是一个好的解决方案。

我该怎么办?

2 个答案:

答案 0 :(得分:0)

我建议使用one-to-many关系。因为一个班级可以有几个日期。 如果你有任何想法,当多对多会更好 - 请分享。

答案 1 :(得分:0)

使用逗号的解决方案实际上是错误的,您可以使用L5帮助程序来修改“返回的字符串”,然后更新它,但这是非常糟糕的做法。这是可行


1-N

  

两个类可能在同一日期,这意味着数据库中有更多日期。这完全取决于有多少课程。如果OP有50k(随机数来证明很多)类,这肯定是一个问题。


M-N

由于您与documentation之间存在多对多关系,因此请查看您拥有的选项。

我检查了你,你最终会得到3张牌桌:classesclass_datedates。注意表命名约定。

创建自己的迁移,例如参见数据透视表迁移:

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。

评论是否需要更多指南。