2016-01-07 161 views
0

我正在開發PHP/Symfony2/Doctrine 2中的健身房管理應用程序。 而我正在開發Appointments模塊。 約會不能是一個具有特定event_date(即將發生的日期)的單行,因爲它每週持續幾天,持續數週或數月。 我怎樣才能設計的實體通過以日曆格式顯示它們來保留預約的範圍,在某個月的每一天我可以查看當天的約會?健身房任命數據庫模式

預先感謝您。

回答

0

Appointment實體應該保存諸如ID,描述符,start_date,end_date等信息。重要的是要注意的是「開始」和「結束」 。

在您的日曆,如果你想顯示其開始和結束日期是1月7日1月1日的一週之間的事件,這將是下面的查詢生成器對象:

// In EntityRepository for Appointments 

$this->getQueryBuilder('a') 
    ->where('a.startDate BETWEEN :start AND :end') 
    ->andWhere('a.endDate BETWEEN :start AND :end') 
    ->setParameters([ 
     "start" => '2016-01-01', 
     "end" => '2016-01-07' 
    ]) 
    ->getQuery() 
    ->getResult(); 

如果您只需要一天中的事件並在同一天結束,您所需要做的就是相應地調整您的參數。

0

好的,這是一個好的開始。我認爲這是爲了填補你設定的所有限制。我已經使用了複合密鑰的密碼,但這是爲了簡化表格。

由於您設置的限制:「因爲它每週持續幾天或幾個星期」是錯誤的看待它的方法。你必須在表格中存儲每個約會條目(如果你願意,你可以使用xml文件,但最好的方法是像你想的那樣使用mysql)

在這裏你存儲每個日期C_date表然後在Appointment_date中引用它。這是約會的時間。我會mabye刪除C_date並insted將信息添加到appointment_date。

create table User(
    user varchar(32) NOT NULL PRIMARY KEY 
); 


create table C_date ( 
    c_date DATE NOT NULL PRIMARY KEY 
); 

create table Appointment(
    user varchar(32) NOT NULL, 
    trainer varchar(32) NOT NULL, 
    CONSTRAINT FOREIGN KEY(user) REFERENCES User(user), 
    CONSTRAINT FOREIGN KEY(trainer) REFERENCES User(user), 
    CONSTRAINT id PRIMARY KEY(user, trainer) 
); 


create table Appointment_date( 
    user varchar(32) NOT NULL, 
    trainer varchar(32) NOT NULL, 
    app_date DATE NOT NULL COMMENT "The time and date for the appointment", 
    time TIME NOT NULL, 
    CONSTRAINT FOREIGN KEY(user, trainer) REFERENCES Appointment(user, trainer), 
    CONSTRAINT FOREIGN KEY(app_date) REFERENCES C_date(c_date), 
    CONSTRAINT id PRIMARY KEY(user, trainer, app_date) 

);

enter image description here