我正在開發PHP/Symfony2/Doctrine 2中的健身房管理應用程序。 而我正在開發Appointments模塊。 約會不能是一個具有特定event_date(即將發生的日期)的單行,因爲它每週持續幾天,持續數週或數月。 我怎樣才能設計的實體通過以日曆格式顯示它們來保留預約的範圍,在某個月的每一天我可以查看當天的約會?健身房任命數據庫模式
預先感謝您。
我正在開發PHP/Symfony2/Doctrine 2中的健身房管理應用程序。 而我正在開發Appointments模塊。 約會不能是一個具有特定event_date(即將發生的日期)的單行,因爲它每週持續幾天,持續數週或數月。 我怎樣才能設計的實體通過以日曆格式顯示它們來保留預約的範圍,在某個月的每一天我可以查看當天的約會?健身房任命數據庫模式
預先感謝您。
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();
如果您只需要一天中的事件並在同一天結束,您所需要做的就是相應地調整您的參數。
好的,這是一個好的開始。我認爲這是爲了填補你設定的所有限制。我已經使用了複合密鑰的密碼,但這是爲了簡化表格。
由於您設置的限制:「因爲它每週持續幾天或幾個星期」是錯誤的看待它的方法。你必須在表格中存儲每個約會條目(如果你願意,你可以使用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)
);