我疯了......
我有: - 测试模型和测试表(Id,名称,其他一些领域) - 模块模型和模块表(Id,名称,与Test不同的一些其他字段),模块I表示课程的一部分,长文本; - 课程模型和课程表(Id,名称,其他一些领域) - 数据透视表courses_module和数据透视表的相关CourseModule模型
目的是:我有许多测试和许多组合在一起的模块导致课程。我知道我可以创建一个(手动管理的)数据透视表,如:Id,course_id,module_id,test_id,假设每个行上只能填充module_id和test_id之间的一个字段,并检查在这两个字段之间编译哪个字段我可以找到本课程的下一步(模块或测试)。
或者,另一个手动解决方案是这样的枢轴:Id,course_id,next_section_id(可以是测试id的模块的id),next_section_type(可以是“模块”或“测试”的字符串)我必须对每一行进行检查,以确定next_section_id是指测试还是模块。
或者第三个糟糕的解决方案:我不会在两个不同的表中分割测试和模块(因为它应该!)但是创建一个包含我需要的所有列的大表,此时我可以使用eloquent因为它是一个经典的数据透视表这个坏表和课程表之间的结构,但对于每一行,我必须检查(查看空字段),如果我有一个测试或模块...对任何SQL规范化规则真的很糟糕。
我想用正确的方法,同时没有松散的口才,如果有办法...这是一个逻辑问题,因为一个过程是两个不同类型的对象,模块和测试...
如果不清楚想象一个更简单的例子,房子桌子,狗桌子,人类桌子,枢轴桌来存放房子里面的所有生活;在一所房子里面,也许我们只有人类,有时候只有狗,有时是人类和狗......而雄辩的枢纽只有两张桌子,而不是三张或更多张。