【问题标题】:can we have a column in Cgridview in yii wherein the column doesnt belong to any model我们可以在 yii 的 Cgridview 中有一个列,其中该列不属于任何模型
【发布时间】:2014-01-17 09:26:51
【问题描述】:

我们可以在 yii 的 Cgridview 中有一个列,其中该列不属于任何模型,因为我没有将值存储在 db 中 .. 即,正在使用选择查询计算剩余天数,其中到期日期存储在 db 中并且currendate 我们很容易得到它......因为 daysleft 不是 db 中使用的任何实体中的字段............

在视图中

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'employee-view-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
array('header'=>'Daysleft','value'=>array($model,'daysleft')), 
    ...........
 }

 public function daysleft($data,$row)
{

    $sql="SELECT  datediff(fsp.expirydate,CURDATE())as daysleft
         from tbl fsp
       WHERE ( fsp.pid = ".$data->pt->id." 
      AND fsp.mid=".$data->mid.")

      limit 3";
      $connection = Yii::app()->db;
     $command=$connection->createCommand($sql);
    $dts=$command->queryRow();

     return $dts;
}

结果是这样的

ptid   mid  daysleft
1      1      30
2      1     10
1     10      1 

我可以在 gridview 中显示它吗.......如果不是那么我该怎么办

【问题讨论】:

    标签: mysql yii cgridview


    【解决方案1】:

    是的,你当然可以拥有任何你想要的栏目。

    'columns'=>array(
    array('header'=>'I am UNKNOWN COLUMN','value'=>'unknown value, 
     }
    

    【讨论】:

    • 你能提供一些样品吗
    【解决方案2】:

    您可以使用virtual attributes 来实现此目的。将 daysleft 更改为 getDaysleft 并将其放置在您的模型中。唯一的问题是您不能在函数中使用参数。您可以使用$this-&gt;pt-&gt;id 代替$data-&gt;pt-&gt;id

    在 CGridView 中,您可以将 用作列名。

    【讨论】:

    • 你的意思是我应该做类似 array('header'=>'Daysleft','value'=>$model->dayleft)
    • 这正是我的意思:-) 你只需要$model-&gt;daysleft 而不是$model-&gt;dayleft(错字)。
    • 属性“Modelname.daysleft”未定义。我得到的例外是什么
    • 这里我为每个 pid fsp.mid 得到一个 pid fsp.mid 数组,我要计算 daysleft 并在 cgridview 中显示这 3 个(pid、fsp.mid、daysleft)
    • 我需要有列的网格视图(pid mid ,daysleft)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多