我正在开发一个laravel LMS 应用程序,我在下面描述的是对此的简要概述。
我有一个名为lesson
的表,其中包含以下字段:
lesson_id
title
start_date
end_date
created_at
每个课程可以有多个单元和测试。实际上,Lesson模型与Unit和Test Models有 OneToMany 关系。
单元模型包含以下字段:
unit_id
title
content
created_at
lesson_id
.
.
.
测试模型有以下字段:
test_id
title
description
created_at
lesson_id
.
.
.
现在对于一个特定的课程,我想按照教师(App中的特定用户级别)创建的那样的顺序列出它的单元和测试:
此外,教师可以通过拖放功能在创建后更改单元和测试的放置顺序。
要获取并列出具有相同创建顺序的课程的单元和测试,我认为可以组合到单元和测试模型并使用createt_at
字段。
但是在这种情况下,在老师拖拽单位和考试的地方之后,我做了什么?
在我看来,我应该在每个插入后增加单位和测试表中的order
列。但我不知道如何更改属于模型(课程)的两个单独的表(单元和测试)上的order
列。
答案 0 :(得分:0)
您可以使用订单栏,但随后您必须检查该项目是测试还是单位。
(SELECT title, orderColumn, 'unit' as type FROM unit WHERE lession_id='2')
UNION
(SELECT title, orderColumn, 'test' as type FROM test WHERE lession_id='2')
ORDER BY orderColumn AS;
另一种方法是使用lession_id,item_id,item_type创建连接表,然后根据item_type将它们与JOIN连接。