将另一个表中的列添加到CGridView

时间:2016-01-11 15:37:01

标签: yii cgridview

您好我正在使用yii crud并尝试将另一个表中的列添加到Admin视图

这是我的管理视图CGridView小部件代码。

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'package-days-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        'package_days_id',
        'package_days_description',    
                array(
                    'header' => 'Package Title',
                    'name' => 'package_days_package_id',
                    'value' => function ($data){
                        echo $data->packagePackagedays->package_title;
                    }
                ),
        array(
            'class'=>'CButtonColumn',
        ),
    ),
)); ?>

这是'PackageDays'模型中的关系函数。

public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
                    'packagePackagedays' => array(self::BELONGS_TO, 'Packages', 'package_days_package_id'),
        );
    }

这是'PackageDays'模型中的搜索功能。

public function search()
    {
        // @todo Please modify the following code to remove attributes that should not be searched.

        $criteria=new CDbCriteria;
                $criteria->with = "packagePackagedays";
        $criteria->compare('package_days_id',$this->package_days_id);
        $criteria->compare('packagePackagedays.package_title',$this->package_days_package_id);
        $criteria->compare('package_days_description',$this->package_days_description,true);

        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));
    }
  

我成功添加了列,但我无法搜索新值   添加了专栏。

如果有人可以关注它会很棒

1 个答案:

答案 0 :(得分:1)

确保将package_days_package_id添加为Packages模型的公共属性。否则$ this-&gt; package_days_package_id不存在

  

类包扩展了CActiveRecord {

     

public $ package_days_package_id;

     

...

另外,请确保在“搜索”方案的“安全”验证规则中添加了package_days_package_id(也在您的Packages模型中)。如果没有这个,您在文本框中输入的值将不会分配给$ this-&gt; package_days_package_id

  

公共职能规则(){

     

返回数组(

     

...

     

// search()

使用以下规则      

array('束,of,stuff,...,package_days_package_id','safe','on'=&gt;'search'),

如果您还希望在点击时对网格列进行排序,则还必须创建自定义CSort并将其提供给CActiveDataProvider