Mysql YII库存控制系统问题

Mysql YII库存控制系统问题,mysql,activerecord,yii,inventory-management,Mysql,Activerecord,Yii,Inventory Management,伙计们帮我做这个。我是YII的新手。我想这样显示每个项目 实际数据库 最好的方法是什么?您要找的是交叉表或透视表。这里有一个链接:您要查找的是交叉表或数据透视表。这里有一个链接:我一直在寻找同样的东西,并且有一个使用CSqlDataProvider的解决方案。重要的是要注意,当使用CSqlDataProvider时,它返回一个数组,而CActiveDataProvider返回一个对象 这是模型代码 public function displayStock($id) { $sql='S

伙计们帮我做这个。我是YII的新手。我想这样显示每个项目

实际数据库


最好的方法是什么?

您要找的是交叉表或透视表。这里有一个链接:

您要查找的是交叉表或数据透视表。这里有一个链接:

我一直在寻找同样的东西,并且有一个使用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替换为您使用的名称即可

我确信上面的代码可以做一些调整,比如在查询中使用绑定参数等等,但这对我来说是有效的


欢迎提出任何意见或改进。我只学了8个月的php和3个月的yii。

我一直在寻找同样的东西,并且有一个使用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替换为您使用的名称即可

我确信上面的代码可以做一些调整,比如在查询中使用绑定参数等等,但这对我来说是有效的


欢迎提出任何意见或改进。我只学了8个月的php,学了3个月的yii。

这里有一些文档可以帮助你阅读,但我的问题是不同的。哦,我不知道怎么做……我需要将这些值存储在数组中还是有其他方法……你总是有4个分支,或者分支的数量是动态的?是的,它是动态的…现在它的4有一些文档可以帮助你阅读,但我的问题不同。哦,我不知道怎么做…我需要将这些值存储在数组中还是有其他方法…你总是有4个分支,或者分支的数量是动态的吗?是的,它是动态的…现在它是4是的,这是我想要的,但是如何在yii活动记录中执行它活动记录是访问和修改对象的方便方式,但不能做所有事情。也许?您将不得不编写自己的SQL。要在网格中显示结果,需要使用CSqlDataProvider。是的,这正是我想要的,但如何在yii活动记录中执行活动记录是访问和修改对象的方便方式,但不能完成所有操作。也许?您将不得不编写自己的SQL。要在网格中显示结果,需要使用CSqlDataProvider。