具有属于基于相似字段

时间:2016-05-14 08:09:48

标签: php mysql laravel

我正在开发一个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中的特定用户级别)创建的那样的顺序列出它的单元和测试:

第1课:
enter image description here

此外,教师可以通过拖放功能在创建后更改单元和测试的放置顺序。

要获取并列出具有相同创建顺序的课程的单元和测试,我认为可以组合到单元和测试模型并使用createt_at字段。

但是在这种情况下,在老师拖拽单位和考试的地方之后,我做了什么?

在我看来,我应该在每个插入后增加单位和测试表中的order列。但我不知道如何更改属于模型(课程)的两个单独的表(单元和测试)上的order列。

1 个答案:

答案 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连接。