YII Инвентаризация системы контроля выпуска

Ребята, помогите мне сделать это. Я новичок в YII. Я хочу отображать каждый элемент ветки акций, как это.

фактическая база данных

Каков наилучший способ сделать это?

2 ответа

Решение

То, что вы ищете, это кросс-таблица или сводная таблица. Вот ссылка: http://www.artfulsoftware.com/infotree/qrytip.php?id=523

Я искал то же самое, и у меня есть решение с использованием CSqlDataProvider. Важно отметить, что при использовании CSqlDataProvider он возвращает массив в отличие от CActiveDataProvider, который возвращает объект.

Вот код модели

public function displayStock($id)
{
    $sql='SELECT product_id, COUNT(*) as productCount FROM stock WHERE assigned_to = 2 GROUP BY product_id';
    $dataProvider=new CSqlDataProvider($sql, array(


        'pagination'=>array(
            'pageSize'=>10,
        ),
    ));
    return $dataProvider;
}

Вот код для Вей

$stockDataProvider = Stock::model()->displayStock(Yii::app()->user->id);
$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'stock-grid',
    'ajaxUpdate' => true,
    'template'=>'{items}{summary}{pager}',
    'dataProvider'=>$stockDataProvider,
    'columns'=>array(

        'product_id',
        array(
                'name'=>'test',
                'value'=>'$data["productCount"]'
            ),


        array(
            'class' => 'CButtonColumn',
            'template' => '{view} {update}',

        ),

    ),
));

При определении оператора SQL в модели вы можете видеть, что мы установили COUNT(*), который будет называться productCount. Затем в представлении мы ссылаемся на это имя в массиве столбцов следующим образом

array(
                'name'=>'test',
                'value'=>'$data["productCount"]'
            ),

Поэтому просто замените productCount именем, которое вы использовали.

Я уверен, что приведенный выше код может быть связан с некоторыми изменениями, т.е. с использованием Binded params в запросе и т. Д., Но это сработало для меня.

Любые комментарии или улучшения приветствуются. Я только около 8 месяцев в php и 3 месяца в yii.

Другие вопросы по тегам