2013-03-12 4 views
1

В моей модели у меня есть relation() вот так.Использовать псевдоним столбца в dataProvider

 'notRelUser' => array(
      self::HAS_MANY, 
      'LocationUser', 
      'location_id', 
      'condition' => 'notRelUser.status is null', 
      'on' => 'notRelUser.user_id = ' . Yii::app()->user->getId(), 
      'with' => array('parent_location'), 
      'select' => array('*', 'name AS canApply'), 
     ), 

и это

public $canApply; 

В моем контроллере я это

$regions = Location::model()->with('notRelUser')->findAll(); 
    $arrayCanApply = new CArrayDataProvider($regions); 

Я тогда пытаюсь напечатать значение canApply в виджете для DataGrid

<?php $this->widget('bootstrap.widgets.TbGridView', array(
'dataProvider'=>$arrayCanApply, 
'columns'=>array(
    array('name'=>'name', 'header'=>'Name'), 
    array('name' => 'canApply', 'value'=>'$data->canApply', 'header'=>'CanApply'), 
), 
)); 

Но столбец canApply пуст.

Я также пробовал без части $data->.

Как распечатать этот псевдоним?

(я знаю значение псевдонима я тривиальным, но я изменю это позже)

UPDATE:

я могу получить значение с помощью выбора в CDbCriteria - но я хочу сделать это по отношению.

Это действительно работает.

$criteria = new CDbCriteria; 
$criteria->select = '("foobar") AS canApply'; 
$regions = Location::model()->with('notRelUser')->findAll($criteria); 

но мне кажется странным, что я должен создать $ критерии на каждый раз

ответ

2

вам нужно объявить можете canApply как атрибут модели

в модели decalare canApply как атрибут

public $canApply; 
+0

Я уже сделал это, но, возможно, я не написал это достаточно хорошо в вопросе. Значение по-прежнему равно нулю. –

0

У меня также была та же проблема. Попробуйте 'value'=>'$data->notRelUser->canApply' вместо 'value'=>'$data->canApply'. Кроме того, вы должны объявить атрибут

public $canApply; 

LocationUser в вашей модели, а не в Location модели.

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