2012-04-18 97 views
2

我正在开发一个运动场预订系统,我需要生成一个“预订表”,它将表头中的列显示为法院,并将行显示为预订的时间段。OO设计问题(使用Symfony2)

例如,

___________________________________ 
|   |   |   | 
| Court 1 | Court 2 | Court 3 | 
|___________|___________|___________| 
|   |   |   | 
| 10.00 am | 10.00 am | 10.00 am | 
|___________|___________|___________| 
|   |   |   | 
| 11.00 am | 11.00 am | 11.00 am | 
|___________|___________|___________| 

要求:

  • 甲俱乐部可以有任意数量法院
  • 甲俱乐部可以具有用于预订任何时间增量(例如,如上图所示1个小时, 30分钟,40分钟等)
  • 表中的每个单元格表示“预订”

我想确保我从一开始这个权利,所以我有几个问题:

  1. 您将创建什么实体来实现这一
  2. 你怎么会去生成这个预订表
  3. 如何将上表中的单元格链接到预订

在此先感谢。

+0

你应该学习如何同时接受和接受答案。这是我们如何表示赞赏的人谁花了时间来尝试和帮助的计算器:) – webbiedave 2012-04-18 22:41:13

+0

嗨Webbiedave,感谢您的反馈。因为每个答案都是如此不同,我还不知道最好的攻击方式,所以我不能说我的问题已经被“回答” - 这就是为什么我没有接受任何答案。至于投票方式,我认为你需要25的声望,然后才能做到这一点。 – 2012-04-18 22:46:08

+0

不用担心。实际上,你只需要15人进行upvoting。无论哪种方式,您现在有超过25个:) – webbiedave 2012-04-18 22:49:34

回答

2

那么,我认为这是一种标准?

首先,您需要一个俱乐部实体。每个俱乐部可以有n个法院:

Club 1:n Court 

然后有一个预约表,这是1:N的法院:

Court 1:n Booking 

我不知道,如果你的第二个要求是指一个俱乐部有一个时间增量(在这种情况下,这是俱乐部实体的一个变量),或者如果它可以有很多(比将会有一个TimeIncrement实体)

生成表格可能有点棘手。几分钟后,我得到了5-6个可能工作的解决方案。您可以使用特殊对象,您可以针对特定的法庭和时间请求预订,并搜索某个收藏。我们可以建立一个数组,每次有一个密钥,如果没有预订,它就是空的。每个球场都有一个数组,比2个嵌套for循环并从数组中读取每个值。您可以构建重新排列数据的查询,以便直接使用它们。或者,也许你可以在特定的日期和时间向法院提出反对意见。 但我想这就是开发者的目标......找出最适合给定需求并实施的最佳方案。

1

您将创建什么实体来实现这一

关闭我的头顶,它看起来像你需要3:俱乐部,网球场,预订

你怎么会去关于生成此预订表

该表应该可能包含id,court_id,start_time,end_time

你将如何在上面的表中的单元格链接到一个预订

如上所述,开始/结束时间在预订表中的列。

+0

随着时间增量的给定,预订对象上不需要end_time。如果法院可以预订超过一次的增量,那么如果这应该由一个预订对象来表示,或者如果一个对象实际上只是一次增量,则会做出决定。 – Sgoettschkes 2012-04-18 21:00:55

+0

您可以用'duration'替换'end_time'。无论哪种方式,魔鬼都在细节中,并且随着更多规则需要实施,您必须遵循设计。必要时,您可以为每个法庭进行多次预订,并实施预防时间重叠的代码强制措施。 – webbiedave 2012-04-18 21:48:16

1

我只是从数据库中查询数据,并将其转换成json并将其传递到网站。前端然后可以用javascript构建表格。

为此,我将创建一个custom entityBookingTable,它根据请求直接返回数据作为数组,然后可以使用json_encode轻松转换为json。

然后,您可以专注于显示单个预订的更详细页面,您将自动创建您需要的实体(如果您尚未为表格的自定义实体制定DQL)。