2013-03-12 55 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->部分。

如何打印此别名?

(我知道别名i的值微不足道,但以后我会改变)

UPDATE:

我可以通过选择在CDbCriteria获得的价值 - 但我想这样做它关系。

这是行不通的。

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

但似乎奇怪的是,我必须在每次创建一个$标准

回答

2

需要声明可以canApply作为模型decalare canApply的模型

的属性作为属性

public $canApply; 
+0

我已经这样做了,但也许我没有在问题中写得够好。该值仍然为空。 – 2013-03-12 20:18:00

0

我也有同样的问题。试试'value'=>'$data->notRelUser->canApply' 而不是'value'=>'$data->canApply'。另外,你需要在你的LocationUser模型申报属性

public $canApply; 

,而不是在Location模型。