Yii网格日历电子表格
我是一名初级PHP开发人员。我有一个我写的应用程序,我想用Yii重写它。到目前为止,大部分内容都很直截了当,但我在当前应用程序中有一个观点是使用该应用程序的公司喜欢的,我怀疑他们是否会希望它改变 在这个视图中,有一个看起来很像电子表格的表单(许多行和列用于输入数量)。表单的第一列是项目名称,其他7列表示一周中每天的项目数量。每个单元格表示行项目和列日期的顺序,并有一个输入框 在数据库中,每个订单都是数据库中的一行,每个订单只有一个日期列。在纯PHP中构建视图非常简单,但我不知道如何使用Yii实现这一点 Yii的CGridView似乎将数据库列映射到数据网格表中的列。我不知道如何在网格视图中有7列,当数据库只有一个日期列时,一周中的每一天都有一列。根据CGridView中的文档,每行对应一个数据项。在我看来,每行需要7个数据项 问题: 现在有没有办法和Yii一起做这个? 编写扩展是一个好的解决方案吗? Yii根本不打算帮我看这个观点吗?或者除了CGridView还有什么? 如果我能做到,我从哪里开始?CActiveDataProvider中的一些东西,扩展CDATA列,调整模型Yii网格日历电子表格,yii,Yii,我是一名初级PHP开发人员。我有一个我写的应用程序,我想用Yii重写它。到目前为止,大部分内容都很直截了当,但我在当前应用程序中有一个观点是使用该应用程序的公司喜欢的,我怀疑他们是否会希望它改变 在这个视图中,有一个看起来很像电子表格的表单(许多行和列用于输入数量)。表单的第一列是项目名称,其他7列表示一周中每天的项目数量。每个单元格表示行项目和列日期的顺序,并有一个输入框 在数据库中,每个订单都是数据库中的一行,每个订单只有一个日期列。在纯PHP中构建视图非常简单,但我不知道如何使用Yii实现
我真的不知道如何继续,如果不合适的话,我也不想把应用程序移植到Yii上。希望这足够清楚地表达问题所在。提前感谢。一个选项是为items表创建一些关系。我假设它们已经与订单表相关。您可以在项目模型中为一周中的每一天创建一个项目,例如:
public function relations()
{
return array(
...
'sundayOrderCount' => array(self::STAT, 'Orders', 'item_id', 'condition'=>'DAYNAME(`order_date`) = "Sunday"',
...
);
}
(其中,item_id
是订单表中项目的fk,order_date
是订单表中订单发出时间的时间戳)
在上面的示例中,您应该能够从表中获取所有项目,并获得每个项目周日的总销售额,就像这样
$model->sundayOrderCount;
然后弹出一个CGridView,如下所示:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'item-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'name',
array(
'header'=>'Sunday Sales',
'value'=>'$data->sundayOrderCount',
),
),
));
没有测试过,但我希望这能让你继续下去。如果你想否决这个问题,最好你至少说一句为什么我知道如何更好地表达问题,或者在提问之前我应该做什么,CArrayDataProvider看起来像是我在寻找的东西…我最终做的是,真正解决了整个问题的是,我编写了一些SQL将行转换为列,所以数据库结果集本身就有我想要的列。然后用CActiveDataProvider在它们之间循环。结果证明它更容易、更干净。但是因为你的回答,我学到了很多。当然,我很高兴我首先走上了这条路。那也行,是的!作用域和关系在很多情况下都非常方便,请仔细阅读它们,它们也很好用且简单:)