Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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
Yii网格日历电子表格_Yii - Fatal编程技术网

Yii网格日历电子表格

Yii网格日历电子表格,yii,Yii,我是一名初级PHP开发人员。我有一个我写的应用程序,我想用Yii重写它。到目前为止,大部分内容都很直截了当,但我在当前应用程序中有一个观点是使用该应用程序的公司喜欢的,我怀疑他们是否会希望它改变 在这个视图中,有一个看起来很像电子表格的表单(许多行和列用于输入数量)。表单的第一列是项目名称,其他7列表示一周中每天的项目数量。每个单元格表示行项目和列日期的顺序,并有一个输入框 在数据库中,每个订单都是数据库中的一行,每个订单只有一个日期列。在纯PHP中构建视图非常简单,但我不知道如何使用Yii实现

我是一名初级PHP开发人员。我有一个我写的应用程序,我想用Yii重写它。到目前为止,大部分内容都很直截了当,但我在当前应用程序中有一个观点是使用该应用程序的公司喜欢的,我怀疑他们是否会希望它改变

在这个视图中,有一个看起来很像电子表格的表单(许多行和列用于输入数量)。表单的第一列是项目名称,其他7列表示一周中每天的项目数量。每个单元格表示行项目和列日期的顺序,并有一个输入框

在数据库中,每个订单都是数据库中的一行,每个订单只有一个日期列。在纯PHP中构建视图非常简单,但我不知道如何使用Yii实现这一点

Yii的CGridView似乎将数据库列映射到数据网格表中的列。我不知道如何在网格视图中有7列,当数据库只有一个日期列时,一周中的每一天都有一列。根据CGridView中的文档,每行对应一个数据项。在我看来,每行需要7个数据项

问题: 现在有没有办法和Yii一起做这个? 编写扩展是一个好的解决方案吗? Yii根本不打算帮我看这个观点吗?或者除了CGridView还有什么? 如果我能做到,我从哪里开始?CActiveDataProvider中的一些东西,扩展CDATA列,调整模型


我真的不知道如何继续,如果不合适的话,我也不想把应用程序移植到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在它们之间循环。结果证明它更容易、更干净。但是因为你的回答,我学到了很多。当然,我很高兴我首先走上了这条路。那也行,是的!作用域和关系在很多情况下都非常方便,请仔细阅读它们,它们也很好用且简单:)