1

在我的模型中,我有一个relation()这样的。

        '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);

然后我试图在 datagrid 的小部件中打印出canApply的值

<?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->部分。

如何打印此别名?

(我知道别名的值很简单,但我稍后会更改)

更新:

我可以通过使用 select in 来获得价值CDbCriteria- 但我想这样做。

这确实有效。

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

但是我每次都必须创建一个 $criteria 似乎很奇怪

4

2 回答 2

2

你需要声明 can canApply 作为模型的属性

在你的模型 decalare canApply 作为属性

public $canApply;
于 2013-03-12T19:25:08.370 回答
0

我也有同样的问题。尝试'value'=>'$data->notRelUser->canApply' 代替'value'=>'$data->canApply'. 另外,您需要声明属性

public $canApply;

在您的LocationUser模型中,而不是在Location模型中。

于 2015-07-26T08:59:52.177 回答