Подсчитать и вставить с условием Codeigniter - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть форма, которую мне нужно заполнить, чтобы заполнить таблицу пособий. Таблица допусков содержит код сотрудника, имя сотрудника, период времени и количество посещенных дней. Форма содержит только код сотрудника, имя сотрудника и период времени. Таким образом, посещаемые дни должны заполняться автоматически, исходя из количества посещенных дней из таблицы посещаемости с условием, основанным на периоде времени.

Это структура таблицы посещаемости:

|  id_attend   |  employee_id  |  employee_name  |   date   |  time_in  |  time_out  |
|      1       |     RYN       |     RYAN        |01.01.2011|  07.00    |  19.00     |

Между тем, это структура таблицы пособий

|  id_allowance   |  employee_id  |  employee_name  |   period  |  days_attended   |
|      1          |     RYN       |     RYAN        |  01.2011  |     1            |

Таким образом, days_attended должен быть заполнен путем подсчета количества посещенных дней на основе employee_id и периода. Я попробовал это в моей модели:

        public function count_days_attended()
    {
             $this->db->select('*, COUNT(attendance.date) as allowance.days_attended');
             $this->db->from('attendance');
             $this->db->join('allowance','attendance.employee_id= allowance.employee_id');
             $this->db->order_by('employee_id','DESC');
             $this->db->where(MONTH('attendance.date'), MONTH('allowance.period'));
             $query = $this->db->get();
             return $query->result();
    }

а это мой контроллер:

public function submit(){
    $dateTime = new DateTime($this->input->post('period'));
    $formatted_date = date_format($dateTime, 'Y-m-d' );

    $data = array(
        'employee_id'=>$this->input->post('employee_id'),
        'employee_name'=>$this->input->post('employee_name'),
        'period'=> $formatted_date,
    );
    $this->absengaji_m->count_days_attended;
    $this->absengaji_m->insert($data);
    redirect('absengaji');
   }

Там нет ошибки, но программа даже не дает никакого ответа на мой код. После того, как я нажал кнопку «Отправить», все еще показывают 0 в посещенные дни

Есть ли способ исправить это? : /

1 Ответ

0 голосов
/ 12 сентября 2018

Я думаю, у вас есть несколько проблем здесь.Чтобы погасить их,

  1. Вы не указываете, какой сотрудник в вашем предложении WHERE
  2. Вы неправильно вызываете свой метод
  3. Вы не фиксируете возвратваш метод
  4. Вы не добавляете результат в запрос вставки.

Я не разработчик CodeIgniter, поэтому не могу помочь вам с определенным синтаксисом, но что-то вроде этого должноВы на правильном пути,

//accept a parameter so you can know which employee
public function count_days_attended( $employee_id ) {
     $this->db->select('*, COUNT(attendance.date) as allowance.days_attended');
     $this->db->from('attendance');
     $this->db->join('allowance','attendance.employee_id= allowance.employee_id');
     $this->db->order_by('employee_id','DESC');
     $this->db->where(MONTH('attendance.date'), MONTH('allowance.period'));
     //add the employee id to your where clause so you are searching for the correct employee only
     //$this->db->where()   employee id = $employee_id
     $query = $this->db->get();
     return $query->result();   //you are returning a result here
}

public function submit(){
    $dateTime = new DateTime($this->input->post('period'));
    $formatted_date = date_format($dateTime, 'Y-m-d' );

    $data = array(
        'employee_id'=>$this->input->post('employee_id'),
        'employee_name'=>$this->input->post('employee_name'),
        'period'=> $formatted_date,
    );

    //save the result in a variable
    $days_attended = $this->absengaji_m->count_days_attended( $data['employee_id'] );  //call as a method and pass the employee id to the method

    //append to insert query
    $data['days_attended'] = $days_attended;

    $this->absengaji_m->insert($data);
    redirect('absengaji');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...