Подсчитать и вставить с условием Codeigniter

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

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

|  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

Решение

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

  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');
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]