在CakePHP 3查询where子句中使用MySql DATE函数

时间:2019-06-06 10:08:21

标签: mysql cakephp cakephp-3.0

目标:尝试从数据库表中获取某个日期的所有帖子(例如,我的日期时间格式为“ 2019-03-07 12:30:00”,那么我想从中获取所有帖子日期'2019-03-07')。

由于我需要此日期之后的帖子,因此我正在将给定的datetime转换为i18nFormat日期格式。如下::

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

然后,在where子句中,我在表字段上使用mySql DATE function,它返回了我期望的结果。代码如下:

    $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未知列

如何在Cakephp 3查询中使用mysql DATE函数?我检查了其他相关答案,但找不到办法。

1 个答案:

答案 0 :(得分:0)

设法找到答案。

$form->field($model, 'id_color')->widget(Select2::classname(), [
    'data' => ['1' => 'blue', '2' => 'red', '3' => 'yellow'],
    'options' => ['class' =>'myclass'],
    'pluginEvents' => [
        "select2:opening" => "function() { $('.myclass').attr('disabled', true); }",
    ], 
]);