2016-01-11 4 views
0

Привет Я использую YII CRUD и пытается добавить столбец из другой таблицы с точки зрения администратораДобавить столбец из другой таблицы в CGridView

Это мое мнение администратора 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

Wiki http://www.yiiframework.com/wiki/ 590/сортировки и фильтр-а-заказ или композит-cgridview-колонного, что может-даже-содержать-данные-от-разные столы / – SiZE

ответ

1

Убедитесь, что вы добавили package_days_package_id в качестве публичной собственности вашей модели Packages. В противном случае $ this-> package_days_package_id не существует

класса пакетов распространяется CActiveRecord {

общественности $ package_days_package_id;

...

Также убедитесь, что вы добавили package_days_package_id в своем «безопасном» правила проверки для «поиска» сценарий (также в модели пакеты). Без этого значения вы введите в текстовом поле не будет назначен на ваш $ this-> package_days_package_id

правила государственных функций() {

возвращение массива (

...

// следующее правило используется при поиске()

массива ('гроздь, из, вещи, ..., package_days_package_id', 'безопасный', 'на' 'поиск' =>),

Если вы хотите, чтобы столбец сетки быть сортируется по щелчку, вы также должны создать пользовательский CSort и предоставить его в CActiveDataProvider

Смежные вопросы