Date CakePHP检查是否有预定日期
一个星期前我就一直在努力解决这个问题,这让我快发疯了 我正在用CakePHP2.x做一个森林调查网站 有很多地方,每个地方都有不同的点。用户可以选择其中一个点并预订一天的调查,但每天一个点只能有一次调查 这些模型是:地点、点、用户、BookedSurvey 控制器包括:PlacesController、PointsController、UsersController、BookedSurveySController 表中省略了一些不必要的问题,如地点、点、用户、调查;在预订的调查中,您可以找到id INT AUTO INCREMENT、survey_date time、point_id INT和user_id INT字段 视图包括:添加、编辑、删除和索引 查看点时,用户可以选择日期并按书本调查。这是视图的一部分:Date CakePHP检查是否有预定日期,date,cakephp,compare,cakephp-2.0,Date,Cakephp,Compare,Cakephp 2.0,一个星期前我就一直在努力解决这个问题,这让我快发疯了 我正在用CakePHP2.x做一个森林调查网站 有很多地方,每个地方都有不同的点。用户可以选择其中一个点并预订一天的调查,但每天一个点只能有一次调查 这些模型是:地点、点、用户、BookedSurvey 控制器包括:PlacesController、PointsController、UsersController、BookedSurveySController 表中省略了一些不必要的问题,如地点、点、用户、调查;在预订的调查中,您可以找到id
<h2>Book a date:</h2>
<?php
echo $this->Form->create('BoostCake', array(
'inputDefaults' => array(
'div' => 'form-group',
'label' => array(
'class' => 'col col-md-1 control-label'
),
'wrapInput' => 'col col-md-9',
'class' => 'form-control'
),
'class' => 'form-horizontal'
));
?>
<?php
echo $this->Form->create('Point');
echo $this->Form->input('BookedSurvey.survey_date', array(
'type'=>'date',
'label' => '',
'dateFormat' => 'YMD',
'minYear' => date('Y'),
'minMonth' => date('M'),
'minDay' => date('D'),
'div' => 'col col-md-9',
'style' => 'margin: 15px 5px 5px 0px'
));
echo $this->Form->hidden('User.id', array(
'value' => $user_id)
);
?>
<div class="form-group">
<?php
echo $this->Form->submit('Book survey', array(
'div' => 'col col-md-9',
'class' => 'btn btn-success btn-lg',
'style' => 'margin: 10px 5px 5px 10px'
));
?>
</div>
//压缩结束
$booked_condition = $this->Point->BookedSurvey->find('first', array(
'conditions' => array(
'DATE(BookedSurvey.survey_date)' => 'date()'
)
)
);
if ($booked_condition) {
echo "Already booked";
}
老实说,我不知道什么是失败的,但请,如果有人能帮助
好的,解决了:
if ($this->request->is('post')) {
$date = $this->request->data['BookedSurvey']['survey_date'];
$formattedDate = CakeTime::format(
"{$date['year']}-{$date['month']}-{$date['day']}",
"%B %e, %Y"
);
print_r($formattedDate); //'Jul 23, 2014'
$isBooked = $this->Point->BookedSurvey->find('count', array(
// replace the date as you see fit, using Jul 23, 2014 as an example
'conditions' => CakeTime::dayAsSql($formattedDate, 'survey_date')
));
echo "status";
print_r($isBooked);
print_r(date('m'));
print_r($this->request->data['BookedSurvey']['survey_date']);
if($isBooked > 0) {
echo "Already booked";
}
}
正如所建议的,这是问题的解决方案:
if ($this->request->is('post')) {
$date = $this->request->data['BookedSurvey']['survey_date'];
$formattedDate = CakeTime::format(
"{$date['year']}-{$date['month']}-{$date['day']}",
"%B %e, %Y"
);
print_r($formattedDate); //'Jul 23, 2014'
$isBooked = $this->Point->BookedSurvey->find('count', array(
// replace the date as you see fit, using Jul 23, 2014 as an example
'conditions' => CakeTime::dayAsSql($formattedDate, 'survey_date')
));
echo "status";
print_r($isBooked);
print_r(date('m'));
print_r($this->request->data['BookedSurvey']['survey_date']);
if($isBooked > 0) {
echo "Already booked";
}
}您可能希望将您的解决方案添加为实际答案,并在以后接受它。另外,您还可以使用将日期数组转换为日期字符串。