2017-07-25 91 views
1

在这里,我使用明智的时间安排和额外的时间安排明智地设置治疗师的工作时间。 治疗师南希fernadez时间安排是:如何解决codeigniter中的日历任务问题?

  1. 额外的(附加)为她工作的时间日期31-05-2017 10:00:00至14:00:00,即在12小时内为10 :上午00时至下午2时
  2. 安排工作时间为她的日期31-05-2017是14:00:00至19:00:00即在12小时是下午2:00至7:00

    南希fernadez是全天候上班,即上午10:00至下午7:00。

    问题: 我预订的时间是从13:25到14:25,即下午01:25到02:25。它会给我像治疗师不可用当时的错误...其实按照时间表南希可这个时候......

这里是任务分配日历的图像

enter image description here

这里,下面是我的MySQL查询的其他工作时间为她

SELECT SQL_CALC_FOUND_ROWS * 
FROM `extra_day` 
INNER JOIN `therapist` ON `thrp_id` = `exd_thrp_id` 
WHERE `exd_thrp_id` = '3' 
AND `exd_date` = '2017-05-31' 
AND `exd_from` <= '13:25:00' 
AND `exd_to` >= '14:25:00' 

这里,是我下面的MySQL查询的时间表明智的工作时间为她

SELECT SQL_CALC_FOUND_ROWS s.*, CONCAT(th.thrp_fname, " ", th.thrp_surname) AS thrp_name 
FROM `schedule` `s` 
INNER JOIN `therapist` `th` ON `s`.`schd_thrp_id` = `th`.`thrp_id` 
WHERE `schd_thrp_id` = '3' 
AND `schd_day` = '3' 
AND `schd_from` <= '13:25:00' 

我用下面控制器

// check if therapist comes on this day (regular schedule or extra day) 
      $this->load->model('schedule_model'); 
      $schedule = $this->schedule_model->Get(NULL, array('schd_thrp_id' => $data['bk_thrp_id'], 
       'schd_day' => date('N', strtotime($data['bk_start'])), 
       'schd_from' => date('H:i:s', strtotime($data['bk_start'])) 
      )); 

      $this->load->model('additional_work_model'); 
      $additional_work = $this->additional_work_model->Get(NULL, array('exd_thrp_id' => $data['bk_thrp_id'], 
       'exd_date' => date('Y-m-d', strtotime($data['bk_start'])), 
       'exd_from' => date('H:i:s', strtotime($data['bk_start'])), 
       'exd_to' => date('H:i:s', strtotime($data['bk_end'])) 
      )); 
      if ($schedule['countFiltered'] == 0 && $additional_work['countFiltered'] == 0) { 
       $response['status'] = 'failure'; 
       $response['errormsg'] = 'Therapist not available.'; 
       return $response; 
      } 

请提问,如果检查治疗的有效性任何与问题相关的查询

感谢您的帮助...

+0

你仍然没有找到解决方案? – Nawin

+0

@Nawin,Nope我没有找到 – Angel

回答

0

您需要更改查询。因为extra_dayexd_from条件工作,但exd_to条件将不起作用,因为到时间只有14:00:00。而第二个查询不会得到,因为开始时间为14:00:00,但您得到13:25:00。你需要加入这两个表来得到结果。或者你需要给一定的条件一样,如果员工工作extra_day行数

UPDATE

我与我的假设更改您的查询,你可以改变它喜欢和连接查询,你也可以改变你想要的表:

SELECT SQL_CALC_FOUND_ROWS *, exd_date, exd_from, exd_to 
FROM `extra_day` 
INNER JOIN `therapist` ON `thrp_id` = `exd_thrp_id` 
WHERE `exd_thrp_id` = '3' 
AND `exd_date` = '2017-05-31' 
AND `exd_from` <= '13:25:00' 
AND `exd_to` >= '14:25:00' 

SELECT SQL_CALC_FOUND_ROWS s.*, CONCAT(th.thrp_fname, " ", th.thrp_surname) AS thrp_name, schd_from 
FROM `schedule` `s` 
INNER JOIN `therapist` `th` ON `s`.`schd_thrp_id` = `th`.`thrp_id` 
WHERE `schd_thrp_id` = '3' 
AND `schd_day` = '3' 
AND `schd_from` <= '13:25:00' 

$this->load->model('schedule_model'); 
$schedule = $this->schedule_model->Get(NULL, array('schd_thrp_id' => $data['bk_thrp_id'], 
    'schd_day' => date('N', strtotime($data['bk_start'])), 
    'schd_from' => date('H:i:s', strtotime($data['bk_start'])) 
)); 

$this->load->model('additional_work_model'); 
$additional_work = $this->additional_work_model->Get(NULL, array('exd_thrp_id' => $data['bk_thrp_id'], 
    'exd_date' => date('Y-m-d', strtotime($data['bk_start'])), 
    'exd_from' => date('H:i:s', strtotime($data['bk_start'])), 
    'schd_to' => date('H:i:s', strtotime($data['bk_end'])) 
)); 
if($additional_work['exd_from'] <= date('H:i:s', strtotime($data['bk_start'])) && $schedule['schd_from'] >= date('H:i:s', strtotime($data['bk_start']))){ 
    $get_now_with_anymodel = $this->your_model->Get(NULL, array('exd_thrp_id' => $data['bk_thrp_id'], 
    'exd_date' => date('Y-m-d', strtotime($data['bk_start'])), 
    'exd_from' => date('H:i:s', strtotime($data['bk_start'])), 
    'exd_to' => date('H:i:s', strtotime($data['bk_end'])) 
    /* 
    Your Model query: 
    SELECT SQL_CALC_FOUND_ROWS *, exd_date, exd_from, exd_to 
    FROM `extra_day` AS A 
    INNER JOIN `therapist` AS B ON B.`thrp_id` = A.`exd_thrp_id` 
    INNER JOIN `schedule` AS C ON C.`schd_thrp_id` = A.`exd_thrp_id` 
    WHERE `exd_thrp_id` = '3' 
    AND `exd_date` = '2017-05-31' 
    AND A.`exd_from` <= '13:25:00' 
    AND C.`schd_to` >= '14:25:00' 
    */ 
)); 
} 

$ additional_work [“exd_from”]是从模型的返回结果改变它,怎么样,你返回数据

+0

是的,我知道。但我怎么能改变查询。我改变这个问题的查询,然后它可能会影响到另一个预订。 – Angel

+0

我无法加入两个表格,因为额外的工作和额外的工作是我的结构中的两个不同的模型。如果我组合两个表格,为此我必须创建无效的新模型。如果我在其他预订模式中加入两张表格,那么它会损害另一个预订。 – Angel

+0

您有'schd_to'字段吗? – Nawin