Php 多维数组模型

Php 多维数组模型,php,yii,Php,Yii,我对Yii框架有点陌生,这是关于找到最好的解决方案,我知道你可以通过循环和其他方式来实现这一点,但是如果有更好的解决方案的话,我会尝试找到一个更好的解决方案 Structure (example): Tv: id, price, size_id, brand_id Brand: id, name Size: id, inch, cm 因此,现在我正在尝试创建一个网格,其中的行将是品牌,例如:三星、索尼、lg,列表示尺寸,例如:20、30,。。。这些电池的价格就是它的价值

我对Yii框架有点陌生,这是关于找到最好的解决方案,我知道你可以通过循环和其他方式来实现这一点,但是如果有更好的解决方案的话,我会尝试找到一个更好的解决方案

Structure (example):
    Tv: id, price, size_id, brand_id
    Brand: id, name
    Size: id, inch, cm
因此,现在我正在尝试创建一个网格,其中的行将是品牌,例如:三星、索尼、lg,列表示尺寸,例如:20、30,。。。这些电池的价格就是它的价值

           40"   44"   48"  50"
Brand1   $200  $240  $280  320  
Brand2   $180  $220  $240  300  
Brand3   $210  $230  $270  350  

同样,我正在使用Yii/PHP搜索最佳解决方案。

在本例中,使用CSqlDataProvider创建SQL

示例如下:

如果您的网格不是从CGRIDVIEW派生的,您应该考虑使用CGRIDVIEW或重写网格。CGridView为您提供了开箱即用的分页和ajax导航。CGridView也将很容易扩展,例如,您可以将表移动到bootstrap,而不必担心将来的麻烦

如果要使用CActiveRecord,可以通过以下方式执行此操作:

为尺寸添加吸气剂或重写uu进入品牌: 将名称添加到属性标签 配置CGridView以使用您的特殊属性:
当你说网格时,你指的是CGridView还是你自己的网格?对我来说,你可以通过一个Sql查询来实现。现在我正在使用我自己的网格,你建议使用CGridView吗?我不知道你自己的网格是什么,但我认为最简单的方法是使用没有ActiveRecord的自定义Sql请求
public function get30InchPrice() {
   $elems = $this->tvs(array('condition' => 'size_id=:e', 'params' => array('e' => 1)));
   foreach($elems as $v) return $v->price;
   return 0;
}
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        '30InchPrice',
        '40InchPrice',
    ), ));