【问题标题】:How to Insert multiple data to one row as students to one class_room in Laravel?如何将多个数据插入一行作为学生到 Laravel 的一个教室?
【发布时间】:2019-11-25 00:49:44
【问题描述】:

我正在开发像电子学习网站这样的项目
我在数据库中创建了学生、教师、课程和 class_rooms 表

计划是从仪表板进入教室,然后建立新教室,连接到 1 位老师 1 门课程和这么多学生

我可以通过 ID 插入教师和课程,但是学生呢? 我试图制作另一个表并连接所有内容,但不知道该怎么做,

无论如何我都想给我解决方案,即使我必须遵循另一个计划。

谢谢,最好的问候!

【问题讨论】:

  • 首先向我们展示您的代码。其次,您可以使用关系(多对多和 hasManyThrough)laravel.com/docs/6.x/eloquent-relationships
  • 首先我还没有代码,我迷路了,其次如何以这种方式使用关系?对不起,我是 laravel 的新手,谢谢
  • 我的教室控制器还是空的,因为我不知道该怎么办
  • 阅读文档。
  • 哪一个???我只需要如何做到这一点的想法,你说了很多,所以我还在寻找:)

标签: php mysql sql laravel


【解决方案1】:

您应该创建数据透视表类型 class_room_student。在这里,您将存储 class_room ID 和学生 ID。 并使用关系many to many

/**
 * In ClassRoom Model (getting students of class)
 */
public function students()
{
    return $this->belongsToMany(Student::class);
}


/**
 * In Student Model (getting classes of one student)
 */
public function classes()
{
    return $this->belongsToMany(ClassRoom::class);
}

如果需要,不要忘记 'pivot table'、'foreign_key'、'other_key'。

迁移

public function up()
{
    Schema::create('class_room_student', function (Blueprint $table) {
        $table->integer('student_id')->unsigned();
        $table->foreign('student_id')->references('id')->on('students')->onDelete('cascade');

        $table->integer('class_room_id')->unsigned();
        $table->foreign('class_room_id')->references('id')->on('class_rooms')->onDelete('cascade');

        $table->primary(['student_id', 'class_room_id']);
    });
}

public function down()
{
    Schema::dropIfExists('class_room_student');
}

【讨论】:

  • 所以我应该为 class_room_student 中的每个学生设置一行?这会使网站变得沉重吗?课程结束后,每个学生都会离开,直到我上下一堂课,我需要手动选择学生,因为不是同一班的每个学生。那可能吗 ?抱歉,回答太长了,您帮了很多忙,谢谢:)
  • 如果你使用 index.js,它不会让你的网站变得沉重和缓慢。您的数据表条目看起来像 (stud_1 - class_1 | stud_2 - class_1 | stud_2 - calss_2 ...) 一个 stud 可以属于多个类。
  • 从长远来看这不是很糟糕吗?这会产生大量数据,该课程不是一门课程,它不会始终是同一个课程,我需要每次重新创建它,因为在创建所选名称时会收到包含缩放链接的消息,所以这就是我迷路的原因
  • 感谢编辑确实帮了很多忙,但仍然如何从仪表板中选择它们?教室模型只需要 student_id 键吗?
  • 这是这种情况下的标准解决方案。如果设置索引,应用程序不会变慢,即使有数万条记录。如果不需要,您也可以删除数据。
猜你喜欢
  • 2021-09-03
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
相关资源
最近更新 更多