gpt4 book ai didi

mysql - YII 框架中按用户、位置和日期范围分组

转载 作者:行者123 更新时间:2023-11-29 22:51:00 25 4
gpt4 key购买 nike

有人可以帮助我了解如何使用日期范围 (create_date) 并按 user_id 和位置对数据进行分组吗?

我输入字段user_id、位置和日期范围,排序结果恰好发生在日期范围内。我尝试了很多次修复 Controller ,但结果都是一样。

如果我只输入 user_id 字段并输入位置,而没有在 CGridView 上仅按 user_id 和位置排序的日期范围字段,则日期范围将保持随机顺序。

下面是模型、 Controller 和 View

型号模型中的我的变量

 public $from_date;
public $to_date;
....
public function search()
{
$criteria=new CDbCriteria;


$criteria->compare('user_id',$this->user_id);
$criteria->compare('location',$this->location,true);
$criteria->compare('satisfy_val',$this->satisfy_val,true);
$criteria->compare('create_date',$this->create_date,true);
/* $criteria->mergeWith($this->dateRangeSearchCriteria('create_date',$this->create_date
)); */
if(!empty($this->from_date) && empty($this->to_date)){
$criteria->condition="create_date >= '$this->from_date'";
}elseif(!empty($this->to_date) && empty($this->from_date)){
$criteria->condition="create_date <= '$this->to_date'";
}elseif(!empty($this->to_date) && !empty($this->from_date)){
$criteria->condition="create_date >= '$this->from_date' and create_date<= '$this->to_date'";
}

return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>array('defaultOrder'=>array('user_id DESC','create_date DESC')),
));
}

这是我的 Controller

public function actionAdmin()
{
$model=new Satisfact('search');
/* $model->unsetAttributes(); // clear any default values */
if(isset($_GET['Satisfact'])){
/* $model->attributes=$_GET['Satisfact']; */
$model->user_id=$_GET['Satisfact']['user_id'];
$model->lokasi=$_GET['Satisfact']['location'];
$model->from_date=$_GET['Satisfact']['from_date'];
$model->to_date=$_GET['Satisfact']['to_date'];

}
$this->render('admin',array(
'model'=>$model,
));


}
...............

和我的观点

<div class="wide form">

<?php $form=$this->beginWidget('CActiveForm', array(
'action'=>Yii::app()->createUrl($this->route),
'method'=>'get',
)); ?>



<div class="row">
<?php //echo $form->label($model,'user_id'); ?>
<?php //echo $form->textField($model,'user_id'); ?>
</div>

<div class="row">
<?php echo $form->labelEx($model,'user_id'); ?>
<?php $_u = User::model()->findAll();
echo CHtml::activeDropDownList(
$model,'user_id',
CHtml::listData($_u,'id','username'),
array('prompt'=>'',) //empty is aliases FOR ALL user
);
?>
</div>
<div="row">
<?php echo $form->labelEx($model,'location'); ?>
<?php $lo_u = Location::model('Location')->findAll('id');
echo CHtml::activeDropDownList(
$model,'location',
CHtml::listData($lo_u,'location','location'),
array('prompt'=>'',)
);
?>
</div>

<div class="row">
<?php //echo $form->label($model,'location'); ?>
</div>

<div class="column">
<?php echo $form->label($model,'create_date'); ?>
<?php //echo $form->textField($model,'create_date'); ?>
<?php
echo "From : ";
$this->widget('zii.widgets.jui.CJuiDatePicker',
array(
'name'=>'Satisfact[from_date]',
'options'=>array('dateFormat'=>'yy-mm-dd',),

));
echo " To : ";
$this->widget('zii.widgets.jui.CJuiDatePicker',
array(
'name'=>'Satisfact[to_date]',
'options'=>array('dateFormat'=>'yy-mm-dd',),

));


?>
</div>

<div class="column">
<?php echo CHtml::submitButton('Search'); ?>
</div>

<?php $this->endWidget(); ?>

最佳答案

您的代码:

if(!empty($this->from_date) && empty($this->to_date)){
$criteria->condition="create_date >= '$this->from_date'";
}elseif(!empty($this->to_date) && empty($this->from_date)){
$criteria->condition="create_date <= '$this->to_date'";
}elseif(!empty($this->to_date) && !empty($this->from_date)){
$criteria->condition="create_date >= '$this->from_date' and create_date<= '$this->to_date'";
}

在上面的代码中 $this->from_date 是一个属性,您将它用作字符串,因为您在它周围放置了逗号。

'$this->from_date'

以上行在您的代码中是错误的,因为您可以在其中看到逗号。
尝试

$criteria->condition="create_date >=". $this->from_date;

关于mysql - YII 框架中按用户、位置和日期范围分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28913417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com