-1

私は初心者の PHP 開発者です。私が書いたアプリを Yii を使って書き直したいと思っています。これまでのところ、そのほとんどは非常に簡単ですが、現在のアプリには、アプリを使用している会社が気に入っているビューが 1 つあります。彼らがそれを変更することを望んでいるとは思えません。

このビューには、スプレッドシートによく似たフォームがあります (数量を入力するための多数の行と列)。フォームの最初の列はアイテムの名前で、他の 7 列は各曜日のアイテムの数量を表します。各セルは、行アイテムと列の日付の順序を表し、入力ボックスがあります。

データベースでは、個々の注文はデータベース内の行であり、明らかに注文ごとに 1 つの日付列しかありません。純粋な PHP ではビューをリギングするのは簡単でしたが、Yii でこれを行う方法がわかりません。

Yii の CGridView は、データベースの列をデータ グリッド テーブルの列にマップしているようです。データベースに日付列が 1 つしかない場合に、グリッド ビューに 7 つの列 (曜日ごとに 1 つ) を表示する方法がわかりません。CGridView のドキュメントによると、各行は 1 つのデータ項目に対応します。私の見解では、各行は 7 つのデータ項目である必要があります。

質問: 今すぐ Yii でこれを行う方法はありますか? 拡張機能を書くことは良い解決策でしょうか? Yii はこのビューで私をまったく助けてくれませんか? または、CGridView 以外に何かありますか? Yii ができるとしたら、どこから始めればよいでしょうか? CActiveDataProvider の何か、CDataColumn の拡張、モデルの調整?

どのように進めればよいかよくわかりませんし、適切でない場合にアプリを Yii に移植することにあまり踏み込みたくありません。うまくいけば、これは問題が何であるかを伝えるのに十分明確でした. 前もって感謝します。

4

1 に答える 1

1

1 つのオプションは、アイテム テーブルのリレーションを作成することです。それらはすでに注文テーブルに関連付けられていると思います。アイテム モデルの曜日ごとにSTAT リレーションを作成できます。次に例を示します。

public function relations()
{
    return array(
        ...
        'sundayOrderCount' => array(self::STAT, 'Orders', 'item_id', 'condition'=>'DAYNAME(`order_date`) = "Sunday"',
        ...
    );
}

(item_idは Orders テーブル内の Items の fk であり、order_dateは Orders テーブル内の注文が行われたときのタイムスタンプです)

上記の例では、テーブルからすべてのアイテムを取得し、各アイテムの日曜日の総売上を取得できるはずです。

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

それをテストしていませんが、それがあなたに何かをもたらすことを願っています.

于 2012-10-25T09:08:10.077 に答える