第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

CodeIgniter:查詢分組和查找特定數(shù)據(jù)

CodeIgniter:查詢分組和查找特定數(shù)據(jù)

PHP
長風秋雁 2022-07-22 09:35:11
首先,我是 CodeIgniter 的新手,并且仍在學習中。我在 React Native 上創(chuàng)建了一個應用程序,它選擇日期和時間來創(chuàng)建約會。我使用 CodeIgniter 作為我的后端。約會有date、start time和end time。創(chuàng)建預約的條件是:如果已創(chuàng)建約會,例如:date = 15-01-2020、start time = 7:00pm、end time = 8:00pm。然后用戶不能創(chuàng)建另一個約會,例如:date = 15-01-2020, start time = 7:00pm, end time = 8:00pm(類似的日期和時間從晚上 7 點到 8 點已經預訂)date = 15-01-2020, start time = 7:20pm, end time = 7:40pm(在已預約的預約內重疊)date = 15-01-2020, start time = 7:45pm, end time = 8:45pm(開始時間與已預約的時間重疊)date = 15-01-2020, start time = 6:45pm, end time = 7:45pm(結束時間與已預約的時間重疊)date = 15-01-2020, start time = 6:00pm, end time = 9:00pm(與已預約的約會重疊)此外,用戶不應該能夠創(chuàng)建與時間的約會,例如:start time = 8:00pm,end time = 7:00pm(其中start time > end time)根據(jù)上述條件,我只能達到條件 no.1。但是,我遇到了另一個問題,如果預訂了start time = 7:00pmto end time = 8:00pm,我無法從start time = 8:00pmto創(chuàng)建end time = 9:00pm。下面提供的代碼片段: 這是我(在朋友的幫助下)在后端 MODEL 上創(chuàng)建的函數(shù):public function check_datetime_range($where)    {        $this->db->where('freelancer_id', $where['freelancer_id']);        $this->db->where("DATE_FORMAT(app_date_start, '%Y-%m-%d') = ", date('Y-m-d', strtotime($where['app_date_start'])));        $this->db->group_start();            $this->db->group_start();                $this->db->where('app_date_start >=', $where['app_date_start']);                $this->db->where('app_date_end <=', $where['app_date_end']);            $this->db->group_end();            $this->db->or_group_start();                $this->db->where('app_date_start >=', date('Y-m-d H:i:s', strtotime($where['app_date_start'])-3600));                $this->db->group_start();                    $this->db->where('app_date_end <=', $where['app_date_start']);                    $this->db->or_where('app_date_end <=', $where['app_date_end']);                $this->db->group_end();            $this->db->group_end();        $this->db->group_end();        return $this->db->get($this->_table_name)->num_rows();    }任何幫助將不勝感激,因為目前這些都有點壓倒性。
查看完整描述

1 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

解決了:


public function check_datetime_range($where)

{

    $this->db->where('freelancer_id', $where['freelancer_id']);

    $this->db->where("DATE_FORMAT(app_date_start, '%Y-%m-%d') = ", date('Y-m-d', strtotime($where['app_date_start'])));


    $this->db->group_start();

    //  Example: 

    //  start time = 7:00pm, end time = 8:00pm, date = 15-01-2020 (Existing Appointment)


    //1. Prevents overlapping time with an existing appointment

    //  start time = 7:00pm, end time = 8:00pm, date = 15-01-2020

    //  OR

    //  start time = 6:00pm, end time = 9:00pm, date = 15-01-2020

        $this->db->group_start();

            $this->db->where('app_date_start >=', $where['app_date_start']);

            $this->db->where('app_date_end <=', $where['app_date_end']);

        $this->db->group_end();


    //2. Prevents overlapping time from within an existing appointment

    //  start time = 7:15pm, end time = 7:45pm, date = 15-01-2020

        $this->db->or_group_start();

            $this->db->where('app_date_start <=', $where['app_date_start']);

            $this->db->where('app_date_end >=', $where['app_date_end']);

        $this->db->group_end();


    //3. Prevents overlapping end time inside an existing appointment

    //  start time = 6:45pm, end time = 7:45pm, date = 15-01-2020

        $this->db->or_group_start();

            $this->db->where('app_date_start >', $where['app_date_start']);

            $this->db->where('app_date_start <', $where['app_date_end']);

            $this->db->where('app_date_end >', $where['app_date_end']);

        $this->db->group_end();


    //4. Prevents overlapping start time inside an existing appointment

    //  start time = 7:45pm, end time = 8:45pm, date = 15-01-2020

        $this->db->or_group_start();

            $this->db->where('app_date_start <', $where['app_date_start']);

            $this->db->where('app_date_start <', $where['app_date_end']);

            $this->db->where('app_date_end >', $where['app_date_start']);

            $this->db->where('app_date_end <', $where['app_date_end']);

        $this->db->group_end();


    //5. Prevents start time > end time

    // start time = 7:00pm, end time = 6:00pm

        $this->db->or_group_start();

            $this->db->where('app_date_start >', $where['app_date_end']);

        $this->db->group_end();


    $this->db->group_end();


    return $this->db->get($this->_table_name)->num_rows();

}


查看完整回答
反對 回復 2022-07-22
  • 1 回答
  • 0 關注
  • 108 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號