php - 如何解决 codeigniter 中的日历任务问题?

标签 php mysql codeigniter datetime

在这里,我使用日程安排和附加时间安排来设置治疗师的工作时间。 治疗师 nancy fernadez 的时间表是:

  1. 她的额外(附加)工作时间是 31-05-2017 的 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 这次有空......

这是任务分配日历的图片

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'

我使用以下 Controller 检查治疗师的可用性

// 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;
            }

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

感谢您的帮助...

最佳答案

您需要更改查询。因为 extra_day exd_from 条件有效,但 exd_to 条件无效,因为结束时间仅为 14:00:00 .第二个查询不会得到,因为开始时间是 14:00:00 但你得到 13:25:00。您需要连接两个表才能获得结果。或者你需要给出一些条件,比如员工是否工作 extra_day row count

更新

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

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

关于php - 如何解决 codeigniter 中的日历任务问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45295244/

相关文章:

php - Chrome 扩展程序无法从非事件选项卡中获取标题

php - 如何只允许某些设备访问网站

php - 在 Centos 6.5 上安装 Mycrypt

php - Laravel 和 Cookie 中的 GuzzleHttp

php - 我应该如何在 Laravel 中为新类别创建第三个表

php 用户身份验证库/框架...有哪些选项?

php - CodeIgniter - 每小时方法调用

Mysql 选择特定日期1周的数据

mysql - 试图攻击mysql?

php - Codeigniter 网址重定向