У меня есть две таблицы, такие как status_report и праздник. Я хочу уточнить status_report стол используя праздник стол. Я хочу создать ниже SQL с помощью CakePHP.Как обновить одну таблицу, используя другую таблицу в CakePHP 3
UPDATE AttendanceReports s, holiday h
SET s.Status = h.description
WHERE s.work_date = h.work_date and
h.work_date between '2015-05-05' and '2015-12-31';
Как написать этот запрос в CakePHP? (я использую CakePHP 3.x)
Я пробовал следующее, но я не знаю, как установить поле состояния с использованием другой таблицы.
$this->loadModel('Usermgmt.AttendanceReports');
$dateStart = date('Y-m-01') ;
$dateEnd = date('Y-m-t');
$q = $this->AttendanceReports->query()
->update('AttendanceReports s, Holidays h')
->set(['s.status = h.description'])
->where(['s.work_date = h.work_date','h.work_date BETWEEN :start AND :end'])
->bind(':start', $dateStart)
->bind(':end', $dateEnd)
->execute();
это будет генерировать правильный вывод, как этот
UPDATE AttendanceReports s, Holidays h
SET s.status = h.description
WHERE (s.work_date = h.work_date AND
h.work_date BETWEEN '2016-01-01' AND '2016-01-31')
Но это дает ошибку, как показано ниже:
Error: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'ollo_hrm.attendancereports' doesn't exist
$ offday = $ this-> loadModel ('StatusReports'); $ dateStart = ''; $ dateStart = ''; $ query_offday = $ offday-> query(); $ query_offday-> update() -> set (['status' => $ status]) -> где (['work_date BETWEEN: start AND: end']) -> bind (': start', $ dateStart) -> bind (': end', $ dateStart) -> execute(); Я пытаюсь это, но я не знаю, как установить поле состояния, используя другие данные таблицы. – Faisal
Пожалуйста, добавьте PHP-код в свой вопрос, отредактировав его. –
У вас на самом деле есть таблица с именем AttendanceReports? Или это visitance_reports – arilia