У меня есть таблица под названием Bookings
, со следующими атрибутами:CakePHP 3 - искатель не загружая правильные данные
id
artist_id
- внешний ключstatus
amount
created
modified
Это связано с таблицами Artists
, Payments
и Sessions
.
В представлении, я использовал плагин DataTables JQuery для отображения Bookings
, которые отвечают следующим условиям:
- Их
status
равно «подтвердил» - Попутный таблица
Session's
атрибутdate_end
должно быть больше текущую дату.
Однако второе условие, похоже, не работает, поскольку оно ничего не возвращает, когда существуют записи данных, которые соответствуют этому условию.
В моем контроллере, соответствующая находка для этой конкретной таблицы:
$bookingsConfirmed = $this->Bookings->find('all',[
'contain' => ['Sessions', 'Sessions.Studios', 'Sessions.Engineers', 'Artists'],
'conditions'=>['status' => 'confirmed', 'Sessions.date_end >=' => DATE(Time::now())],
'order'=>['Bookings.created'=>'ASC']
]);
Я попытался следующие изменения в условие, все из которых не было никаких заметных различий:
date_end >=' => DATE(Time::now())
'Sessions.date_end >=' => Time::now()
'date(Sessions.date_end) >=' => DATE(Time::now())
'date(Sessions.date_end) >=' => date(DATE(Time::now()))
Если я переключаю вокруг> = знак на <, появляются все мои данные по бронированию, несмотря не все встречи, что условие.
В журнале SQL, это выход для этой конкретной таблицы:
SELECT
Bookings.id AS `Bookings__id`,
Bookings.artist_id AS `Bookings__artist_id`,
Bookings.status AS `Bookings__status`,
Bookings.amount AS `Bookings__amount`,
Bookings.created AS `Bookings__created`,
Bookings.modified AS `Bookings__modified`,
Sessions.id AS `Sessions__id`,
Sessions.booking_id AS `Sessions__booking_id`,
Sessions.studio_id AS `Sessions__studio_id`,
Sessions.engineer_id AS `Sessions__engineer_id`,
Sessions.guestengineer_id AS `Sessions__guestengineer_id`,
Sessions.date_start AS `Sessions__date_start`,
Sessions.date_end AS `Sessions__date_end`,
Sessions.starttime AS `Sessions__starttime`,
Sessions.hours AS `Sessions__hours`,
Sessions.session_genre AS `Sessions__session_genre`,
Sessions.no_people AS `Sessions__no_people`,
Sessions.studio_usage AS `Sessions__studio_usage`,
Sessions.otherpeople_req AS `Sessions__otherpeople_req`,
Sessions.special_req AS `Sessions__special_req`,
Sessions.created AS `Sessions__created`,
Sessions.modified AS `Sessions__modified`,
Studios.id AS `Studios__id`,
Studios.name AS `Studios__name`,
Studios.description AS `Studios__description`,
Studios.created AS `Studios__created`,
Studios.modified AS `Studios__modified`,
Engineers.id AS `Engineers__id`,
Engineers.user_id AS `Engineers__user_id`,
Engineers.eng_firstname AS `Engineers__eng_firstname`,
Engineers.eng_lastname AS `Engineers__eng_lastname`,
Engineers.eng_email AS `Engineers__eng_email`,
Engineers.eng_phoneno AS `Engineers__eng_phoneno`,
Engineers.eng_status AS `Engineers__eng_status`,
Engineers.rate AS `Engineers__rate`,
Engineers.created AS `Engineers__created`,
Engineers.modified AS `Engineers__modified`,
Artists.id AS `Artists__id`,
Artists.name AS `Artists__name`,
Artists.cp_id AS `Artists__cp_id`,
Artists.user_id AS `Artists__user_id`,
Artists.genre AS `Artists__genre`,
Artists.created AS `Artists__created`,
Artists.modified AS `Artists__modified`
FROM
bookings Bookings
LEFT JOIN sessions Sessions ON Bookings.id = (Sessions.booking_id)
INNER JOIN studios Studios ON Studios.id = (Sessions.studio_id)
LEFT JOIN engineers Engineers ON Engineers.id = (Sessions.engineer_id)
INNER JOIN artists Artists ON Artists.id = (Bookings.artist_id)
WHERE
(
status = 'confirmed'
AND Sessions.date_end >= '20/2/17, 4:47 p02'
)
ORDER BY
Bookings.created ASC
По состоянию на сегодняшний день должно быть 3 записи, которые показывают. Я сделал оттиск Time::now
и получил дату:
Cake\I18n\Time Object
(
[time] => 2017-02-20T16:47:11+11:00
[timezone] =>
[fixedNowTime] =>
)
Странным является то, что это было прекрасно работать на прошлой неделе, а формы представления все еще работают. Например, в MySQL моя последняя запись, которую я ввел сегодня, показывает Session.date_end, заполненную в формате YYYY-MM-DD, как и все записи, которые ее выполняли.
Второй вариант должен работать нормально, учитывая, что ваш 'date_end' столбец устанавливается правильный тип DATE/TIME. – ndm