Codeigniter вычитание времени и выделение из базы данных в модели

Я создаю проект библиотеки, где пользователь должен знать, какие книги не были представлены вовремя.Для этого я уже сохранил book_returning_date в базе данных.Однако моя проблема здесь в том, что мне нужно знать, как выбрать даты в модели, которые пересекли там дату возврата, сравнивая с сегодняшней датой.Мой код модели здесь как следовать:

 public function timecalculations($table){
        $query= $this->db->get_where('issue_books',array('department_id'=>$table));
        return $query->result();
    }

и мой контроллер выглядит следующим образом:

public function latebooks(){

        $this->load->model('Time');
        $id=$this->session->userdata('userid');
        $this->load->model('Department');
        $table=$this->Department->selecttable($id);
        foreach($table as $q){}
        $table = $q->department_name;
        $table = strtolower($table);
        $run=$this->Time->timecalculations($table);
        $this->load->view('Books/datetime',['query'=>$run]);
    }

Я новичок в codeigniter поэтому, пожалуйста, простите, поскольку у меня могут быть небольшие проблемы с логикой.Заранее спасибо!

4 ответа

  1. добавить еще одно предложение where,

    public function timecalculations($table){
        $this->db->where('book_returning_date < NOW()');
        $query = $this->db->get($table);
        return $query->result();
    }
    

    это вернет строки, где текущая дата уже пересечена book_returning_date
    я предполагаю, что u сохраняют book_returning_date в следующем формате ‘yyyy-mm-dd H:i:s’

  2. наверное, так и жаль, если я ошибаюсь
    Сначала нужно установить настройки сеанса библиотеки в config
    для моделей :

        public function timecalculations($table){
            $condition = 'department_id = "'.$table.'"';
            $this->db->select('issue_books');
            $this->db->where($condition);
            $query= $this->db->get();
            return $query->result();
        }
    

    для контроллера я не уверен, но как это :

        public function __construct() {
            $this->load->model('Time', 'time');
            $this->load->model('Department', 'departement');
            $this->load->library('Session');
        }
    
        public function latebooks($id){
            $id=$this->session->userdata('userid');
            $table=$this->department->selecttable($id);
            foreach($table as $q){ (probably i'm wrong)
                $table = $q->department_name; (probably i'm wrong)
            }   (probably i'm wrong)
            $table = strtolower($table); (probably i'm wrong)
            $run=$this->time->timecalculations($table);
            $this->load->view('Books/datetime',['query'=>$run]);
        }
    
  3. попробовать это

     public function timecalculations($table){
            $query= $this->db->where('book_returning_date < CURRENT_DATE()', NULL, FALSE)->get($table);
            return $query->result();
        }
    
  4. Попробовать это

    в контроллерах

    public function latebooks()
    {
        $this->load->model('Time');
        $this->load->model('Department');
    
        $id = $this->session->userdata('userid');    
        $result = $this->Department->selecttable($id);  # Changed 
    
        $table = $result[0]['department_name']; # Changed 
        $table = strtolower($table); # Changed 
    
        $run = $this->Time->timecalculations($table);
        $this->load->view('Books/datetime',['query'=>$run]);
    }
    

    в моделях

    public function timecalculations($table)
    {
        $query = $this->db->get_where('issue_books',array('department_id'=>$table));
        $result =  $query->result_array();
        return $result;
    }