2012-04-18 77 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)。