【问题标题】:Add column from another table to CGridView将另一个表中的列添加到 CGridView
【发布时间】:2016-01-11 15:37:01
【问题描述】:

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

这是我的管理视图 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,
        ));
    }

我已成功添加列,但我无法搜索新的值 添加列。

如果有人能看就好了

【问题讨论】:

标签: yii cgridview


【解决方案1】:

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

类包扩展 CActiveRecord{

公开 $package_days_package_id;

...

还要确保您在“搜索”场景的“安全”验证规则中添加了 package_days_package_id(也在您的 Packages 模型中)。没有这个,您在文本框中输入的值将不会分配给您的 $this->package_days_package_id

公共函数规则(){

返回数组(

...

// search()使用以下规则

array('bunch, of, stuff, ..., package_days_package_id', 'safe', 'on'=>'search'),

如果您还希望网格列在单击时可排序,您还必须创建自定义 CSort 并将其提供给您的 CActiveDataProvider

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2020-01-23
    • 1970-01-01
    • 2018-03-06
    相关资源
    最近更新 更多