Yii网格日历电子表格表格

时间:2012-10-25 00:23:37

标签: yii

我是PHP开发人员的开始。我有一个我写的应用程序,我想用Yii重写。到目前为止大部分内容非常简单,但我在当前的应用程序中有一个视图,该公司使用该应用程序喜欢,我怀疑他们会希望它改变。

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

在数据库中,每个订单都是数据库中的一行,显然每个订单只有一个日期列。在纯PHP中很容易掌握视图,但我不知道如何使用Yii来实现这一点。

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

问题: 有没有办法和Yii现在这样做? 编写扩展是一个很好的解决方案吗? Yii根本不会帮助我这个观点吗?或者还有除CGridView之外的东西? 如果Yii可以做到,我从哪里开始? CActiveDataProvider中的东西,扩展CDataColumn,调整模型?

我不确定如何继续,并且如果不合适,不想将应用程序移植到Yii太远。希望这足以说明问题所在。提前谢谢。

1 个答案:

答案 0 :(得分:1)

一种选择是为items表创建一些关系。我假设它们已经与订单表相关。您可以在商品模型中为一周中的每一天创建STAT relation,例如:

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',
        ),
    ),
));

没有测试过,但我希望能给你一些东西。