今天在cakephp 3中如何获取今天,7天,1个月和1年的数据?任何想法?
控制器代码: if($ status == 1){
$data = $this->Sites->find('all')->where(['user_id' => $uid]);
$a = $data->toArray();
$id = $a[0]['id'];
$this->loadModel('Details');
$details = $this->Details->find('all')->where(['site_id' => $id]);
$tmp = $details->toArray();
print_r($tmp);
}
查看代码:
Form-> create('Add',(['id'=>'frm'])); ?> 表格 - >输入('状态',数组( 'type'=> '选择', 'id'=> 'mySelect', 'onchange'=> 'myFunction的()', 'empty'=> '查看详情', 'options'=>数组('1'=>'1天','7'=>'7天','30'=>'1个月','365'=>'1年') ) ); ?>
答案 0 :(得分:2)
要回答您的问题,请使用CakePHP Time class或PHP DateTime class。
您可以像这样使用时间类:
$now = Time::now();
$details = $this->Details->find('all')->where(['site_id' => $id, 'downtime' => $now]);
以上示例将在当前通话中给出日期和时间。您可以使用Time类实例化一个对象并传入一个字符串:
$today = new Time('today');
$seven_days_ago = new Time('7 days ago');
$one_month_ago = new Time('1 month ago');
或者你可以通过集体诉讼实际做到这一点:
$today = Time::now();
$seven_days_ago = (Time::now())->subDays(7);
要回答您编辑过的问题,您可以根据需要获取,然后将它们传递给查询构建器:
$now = Time::now();
$seven_days_ago = new Time('7 days ago');
$details = $this->Details->find('all')->where(['site_id' => $id, function($exp) use($now, $seven_days_ago) {
$exp->between('downtime', $seven_days_ago, $now);
}]);