2013-03-12 53 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模型。