繁体   English   中英

过滤日期。 Cakephp返回的是数组而不是日期,这正常吗?

[英]filter dates. Cakephp is returning an array instead of a date, is that normal?

我正在为一些分页列表构建过滤器,并且我希望能够显示两个日期之间创建的元素。 但我不确定如何正确执行。

风景:

<?php echo $this->Form->create('Logs');?>
<fieldset>
<?php
    echo $this->Form->input('start',array('type'=>'date'));
    echo $this->Form->input('end',array('type'=>'date'));
?>
</fieldset>
<?php echo $this->Form->end('Filter');?>

控制器:

...
$conditions['Logs.created BETWEEN ? AND ?'] = array( $this->data['Logs']['start'],$this->data['Logs']['end']);
...

问题是$this->data['Logs']['start']$this->data['Logs']['end']是数组,我需要字符串:

[Logs] => Array
(
    [start] => Array
        (
            [month] => 04
            [day] => 19
            [year] => 2011
        )

    [end] => Array
        (
            [month] => 04
            [day] => 19
            [year] => 2011
        )
)

我知道我可以使用一些php函数将数组转换为字符串,但是蛋糕中必须有一些函数或某些东西。 我觉得我没有正确构建视图

谢谢你的帮助。

您可以使用时间助手,它是daysAsSql函数

daysAsSql( $begin, $end, $fieldName, $userOffset = NULL )

daysAsSql返回格式为“($ field_name> ='2008-01-21 00:00:00')AND($ field_name <='2008-01-25 23:59:59')”的字符串。 如果您需要搜索两个日期(包括两个日期)之间的记录,这将很方便。

查看时间助手

我认为最好的选择是编写自己的帮助器函数,然后在控制器中调用它。

该线程讨论如何创建您的助手: 如何最好地将CakePHP日期选择器表单数据转换为PHP DateTime对象?

您可以像这样将其加载到控制器中

App::import('Helper', 'DateHelper');
$dateHelper = new DateHelper();

另外,为什么不只切换到常规文本输入,也可能切换到JS datepicker? 这样可以解决您的问题,而不必求助于助手路线。 但是,您将失去下拉菜单的可用性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM