Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用CDbCriteria Yii实现CGridView中日期/时间列的排序_Php_Sorting_Yii_Cgridview - Fatal编程技术网

Php 如何使用CDbCriteria Yii实现CGridView中日期/时间列的排序

Php 如何使用CDbCriteria Yii实现CGridView中日期/时间列的排序,php,sorting,yii,cgridview,Php,Sorting,Yii,Cgridview,过去三天我遇到了一个问题,但没有找到任何有用的解决办法 我想在CGridView上实现一个定制的CDbCriteria,以按降序对LD_DATE列进行排序。但每次它都将列排序为字符串 我想根据数据和时间进行排序。请任何人都能解决这个问题。我的代码怎么了 LogDetailController.php admin.php 数据库脚本 试试这个: $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'log-detail-gr

过去三天我遇到了一个问题,但没有找到任何有用的解决办法

我想在CGridView上实现一个定制的CDbCriteria,以按降序对LD_DATE列进行排序。但每次它都将列排序为字符串

我想根据数据和时间进行排序。请任何人都能解决这个问题。我的代码怎么了

LogDetailController.php

admin.php

数据库脚本

试试这个:

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'log-detail-grid',
'dataProvider'=>$model,
'columns'=>array(
    'LD_TITLE',
    'LD_DESC',
    'LD_CONTROLLER',
    'LD_ACTION',
    'LD_ACTION_ID',
    array(
      'name'=>'LD_DATE',
      'header'=>'LD_DATE',
      'value'=>function ($data, $row){
          echo $data->LD_DATE
       },
      'type'=>'date',
    ),
  ),
));

如果不起作用,请尝试“键入”=>“日期时间”或“键入”=>“日期时间”。我希望这能对您有所帮助。

我找到了解决方案,而且效果很好

LogDetail.php

LogDetailController.php

logdetail.php


您的数据库表中LD_DATE的数据类型是什么?@RafayZiaMir我已经用数据库脚本更新了我的问题。它的类型是DateTime你有什么问题?你看到了什么错误?没有。它没有显示任何错误,我想在CGridView中按降序对LD_DATE列进行排序。但是它将此列排序为字符串数据类型而不是DATETIMENow它显示以下错误致命错误:在第111行调用成员函数getData,该函数位于************************************************\protected\framework\zii\widgets\CBaseListView.php中的非对象上感谢您的帮助。但问题仍然存在。我试过不同类型的。。。它仍然显示上述错误。是否有其他方法可以使用DATETIME列排序在CGridView中显示数据?是否从控制器中删除了addCondition?请忽略我以前的回答不,它还在那里。。我还在主要问题中添加了addCondition。我想这可能对其他人有帮助。你能在数据库中提供一个LD_日期的样本吗?例如2015-02-18 23:04:15。您的身份证日期是否采用这种格式?
$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'log-detail-grid',
    'dataProvider'=>$model,
    'columns'=>array(
        'LD_TITLE',
        'LD_DESC',
        'LD_CONTROLLER',
        'LD_ACTION',
        'LD_ACTION_ID',
        'LD_DATE',
    ),
)); 
CREATE TABLE `log_detail` (
  `LD_ID` int(12) unsigned NOT NULL AUTO_INCREMENT,
  `LM_ID` int(10) unsigned NOT NULL,
  `LD_TITLE` varchar(100) DEFAULT NULL,
  `LD_DESC` varchar(200) DEFAULT NULL,
  `LD_CONTROLLER` varchar(50) DEFAULT NULL,
  `LD_ACTION` varchar(50) DEFAULT NULL,
  `LD_ACTION_ID` int(11) DEFAULT NULL,
  `LD_DATE` datetime DEFAULT NULL,
  PRIMARY KEY (`LD_ID`),
  KEY `LM_ID` (`LM_ID`),
  CONSTRAINT `log_detail_ibfk_1` FOREIGN KEY (`LM_ID`) REFERENCES `log_master` (`LM_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'log-detail-grid',
'dataProvider'=>$model,
'columns'=>array(
    'LD_TITLE',
    'LD_DESC',
    'LD_CONTROLLER',
    'LD_ACTION',
    'LD_ACTION_ID',
    array(
      'name'=>'LD_DATE',
      'header'=>'LD_DATE',
      'value'=>function ($data, $row){
          echo $data->LD_DATE
       },
      'type'=>'date',
    ),
  ),
));
class LogDetail extends CActiveRecord {
    public function viewLog($id) {
        $criteria=new CDbCriteria;
        $criteria->alias="t";
        $criteria->select="t.LD_ID, t.LD_TITLE, t.LD_DESC, t.LD_DATE, t.LD_CONTROLLER, t.LD_ACTION, t.LD_ACTION_ID";
        $criteria->limit = "50";
        $criteria->addCondition("LM_ID=:LM_ID");
        $criteria->params=array(':LM_ID'=>$id);
        $criteria->order = " LD_DATE DESC ";
        return new CActiveDataProvider($this,array('criteria'=>$criteria,'pagination' => array('pageSize' => 50)));
    }
}
class LogDetailController extends Controller {
    public function actionHistory($id) {
        $model = new LogDetail('viewLog');
        $model = $model->viewLog($id);

        $this->render('logdetail',array(
                'dataProvider'=>$model, 
        ));
    }
}
$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'log-detail-grid',
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        array(
            'name' => 'LD_TITLE',
            'type' => 'raw',
            'value' => '$data->LD_TITLE'
        ),
        array(
            'name' => 'LD_DESC',
            'type' => 'html',
            'value' => '$data->LD_DESC."<br />Action: <strong><u>".Yii::app()->request->baseUrl."/index.php/".$data->LD_CONTROLLER."/".$data->LD_ACTION.(($data->LD_ACTION_ID != null) ? ("/".$data->LD_ACTION_ID) : ("") )."</u></strong><br />"'
        ),
        array(
            'name' => 'LD_DATE',
            'type' => 'html',
            'value' => '"<center>Date:&nbsp;".explode(" ", $data->LD_DATE)[0]."<br />Time:&nbsp;".explode(" ", $data->LD_DATE)[1]."</center>"'
            ),
        ),
    )
);