【发布时间】:2019-12-02 12:06:39
【问题描述】:
考虑这种情况,员工可以申请请假,请假由一个或多个leave_lines组成,例如:
id leave_id leave_type date_from date_to
1 2 Annual 2019-12-17 2020-01-15
2 2 Off Duty 2020-01-16 2020-01-19
3 2 Holiday 2020-01-20 2020-01-29
如何根据该数据显示此输出:
Year | Month [1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20][21][22][23][24][25][26][27][28][29][30][31]// 1 to 31 (Maximum total number of days of a months
2019 Dec [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ A][A ][A ][A ][A ][A ][A ][A ][A ][A ][A ][A ][A ][A ][A ]// Base on the data, leave line start from Dec 12, 2019 and Dec is until 31 only
2020 Jan [A][A][A][A][A][A][A][A][A][A ][A ][A ][A ][A ][A ][O ][O ][O ][O ][H ][H ][H ][H ][H ][H ][H ][H ][H ][H ][ ][ ]// Base on the data, the annual leave start from dec 12, 2019 to January 15, 2020, and an Off Duty on January 16 to 19, 2020, also with Holiday on Jan 20 until Jan 29, 2020
这里,A 代表Annual,O 代表Off Duty,H 代表Holiday。这就是我所做的:
if($this->leave->employee_leaves){
foreach ($this->leave->employee_leaves as $key => $value) {
PDF::writeHTMLCell(10, 0, '', '', $this->getYear($value->date_from), $border = $bottom, 0, 0, true, 'C', true);
PDF::writeHTMLCell(11, 0, '', '', $this->getMonth($value->date_from), $border = $bottom, 0, 0, true, 'C', true);
PDF::writeHTMLCell(16, 0, '', '', "", $border = 0, 0, 0, true, 'C', true);
for ($i=1; $i <= 31 ; $i++) {
if($value->leave_type === 'Annual'){
$start = $this->getDateFrom('Annual');
PDF::writeHTMLCell(5, 0, '', '', $i < $start ? "" : "A" , $border = $boxThin, $i == 31 ? $ln = 1 : $ln = 0, 0, true, 'C', true);
}
if($value->leave_type === 'Off Duty'){
$start = $this->getDateFrom('Off Duty');
PDF::writeHTMLCell(5, 0, '', '', $i < $start ? "" : "O" , $border = $boxThin, $i == 31 ? $ln = 1 : $ln = 0, 0, true, 'C', true);
}
if($value->leave_type === 'Holiday'){
$start = $this->getDateFrom('Holiday');
PDF::writeHTMLCell(5, 0, '', '', $i < $start ? "" : "H" , $border = $boxThin, $i == 31 ? $ln = 1 : $ln = 0, 0, true, 'C', true);
}
}
}
}
但输出显示如下,这不是我想要的:
Year | Month [1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20][21][22][23][24][25][26][27][28][29][30][31]
2019 Dec [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ A][A ][A ][A ][A ][A ][A ][A ][A ][A ][A ][A ][A ][A ][A ]
2020 Jan [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][O ][O ][O ][O ][O ][O ][O ][O ][O ][O ][O ][O ][O ][O ][O ][O ]
2020 Jan [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][H ][H ][H ][H ][H ][H ][H ][H ][H ][H ][H ][H ]
【问题讨论】: