Использование функции MySql DATE в запросе CakePHP 3 where - PullRequest
0 голосов
/ 06 июня 2019

Цель: пытаться получить все сообщения на определенную дату из таблицы БД (скажем, у меня дата и время в формате '2019-03-07 12:30:00', тогда я хотел бы получить все сообщения от этого дата '2019-03-07').

Поскольку мне нужны сообщения с этой даты, я конвертирую заданную дату и время в формат даты i18nFormat. Как показано ниже: *

 $userSelectedDate = $selectedDate->i18nFormat('yyyy-MM-dd');

затем, В предложении where я использую функцию mySql DATE в поле таблицы, и она возвращает ожидаемый результат. код как показано ниже:

    $conn = connectionManager::get('default');
    $conn->begin();
    $stmt = $conn->prepare(
        "SELECT * FROM `blogs`
            where DATE(`PUBLISHED_DATE`) = '$userSelectedDate'"
    );

    $stmt->execute();
    $conn->commit();

Это отлично работает. Но я хотел бы преобразовать его в Cakephp 3, как показано ниже.

$query = $this
    ->find()
    ->where([
        DATE($this->aliasField('PUBLISHED_DATE')) => $userSelectedDate
    ])
;

Это, очевидно, приводит к ошибке, как показано ниже.

Ошибка: [PDOException] SQLSTATE [42S22]: столбец не найден: 1054 неизвестный столбец

Как использовать функцию mysql DATE в запросе Cakephp 3? Я проверил другие похожие ответы и не смог найти способ.

1 Ответ

0 голосов
/ 06 июня 2019

удалось найти ответ.

    $query = $this->find("all", [
            'conditions' => [
                'DATE(PUBLISHED_DATE)' => $selectedDate->i18nFormat('yyyy-MM-dd')
            ]
        ]
    );
...