【问题标题】:How to solve the calendar task issue in codeigniter?如何解决codeigniter中的日历任务问题?
【发布时间】:2017-12-30 21:42:32
【问题描述】:

在这里,我使用日程安排和额外的时间安排明智地设置治疗师的工作时间。 治疗师 nancy fernadez 的时间表是:

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

    Nancy fernadez 全天提供服务,即上午 10:00 至下午 7:00。

    问题: 我在 13:25 至 14:25 之间预订我的预订时间,即 01:25 pm 至 02:25 pm。它会给我错误,就像当时没有治疗师一样...实际上按照时间表 nancy 有空...

这是任务分配日历的图片

这里是我的 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;
            }

如果有任何与问题相关的疑问,请问我

感谢您的帮助...

【问题讨论】:

  • 还是没有找到解决方案?
  • @Nawin,不,我没找到

标签: php mysql codeigniter datetime


【解决方案1】:

您需要更改查询。因为extra_dayexd_from 条件有效,但exd_to 条件不起作用,因为到时间仅为14:00:00。第二个查询不会得到,因为开始时间是14:00:00,但你得到13:25:00。您需要连接这两个表才能得到结果。或者您需要提供一些条件,例如员工是否在工作extra_day 行数

更新

我根据我的假设更改您的查询,您可以更改它并加入查询,您也可以更改您想要的表:

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'] 是您模型的返回结果 像返回数据一样更改它

【讨论】:

  • 是的,我知道。但是我如何改变查询。我更改了针对此特定问题的查询,然后它可能会影响另一个预订。
  • 我不能加入两个表,因为额外的工作和额外的工作是我结构中的两个不同的模型。如果我合并两个表,我必须创建无效的新模型。如果我在额外的预订模式中加入两个表,那么它对另一个预订的伤害..
  • 你有schd_to字段?
  • 是的,我有这个字段
  • 好的,@Nawin 谢谢
猜你喜欢
  • 2011-10-09
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
相关资源
最近更新 更多