2012-06-15 101 views
1
更換一些數據庫值

我是新與誼,很抱歉,如果我的問題可能是愚蠢的,我使用CGridView顯示在表我的數據庫的某些字段:Yii的視圖,在CGridView

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button')); ?> 
<div class="search-form" style="display:none"> 
<?php $this->renderPartial('_search',array(
    'model'=>$model, 
)); ?> 
</div><!-- search-form --> 

<?php 


$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'show-grid', 
    'dataProvider'=>$model->search(), 
    'filter'=>$model, 
    'columns'=>array(
     'id', 
     'title', 
     'brief', 
     'tbl_season_id', 
     'on_season', 

       array(
        'name'=>'status', 
        'value'=>'Lookup::item("NewsStatus",$data->status)', 
        'filter'=> Lookup::items('NewsStatus'), 
       ), 
     array(
     'class'=>'CButtonColumn', 
     ), 
     ), 
    )); ?> 
    </div> 

我想更換一些正在顯示的值,例如,on_season場是二進制的,並在表中的值是0或1,我想改變這個值YesNO

而且tbl_season_id是一個外鍵形成另一張桌子,我希望得到本賽季的名字,並把它代替不是你的ID用戶可以理解。

+4

對於第一種:你做同樣與 '狀態' 欄。把'type'屬性設置爲'raw',然後你可以在'value'屬性中做任何你需要的事情(例如'$ data-> on_season?'Yes「:」No「')。 對於第二種:在模型中創建一個關係(例如稱爲「季節」),然後將關係放置在網格列中:'season.name'。 – sucotronic

+0

它的工作,也可以替換標題值? –

+1

有一個屬性叫做'header':P有關可用屬性的更多信息:http://www.yiiframework.com/doc/api/1.1/CGridColumn – sucotronic

回答

3

您可以參考自定義您的列值你的心臟的內容

Yii Documentataion: cgridview-render-customized-complex-datacolumns

只要記住,value屬性可以是一個表達式字符串,這就是後來的行,每行數據評估了此wiki文章。所以你有一個方法調用,它可以動態地爲你計算任何值,取決於該行的當前值。

1

讓你有兩個表

1):客戶2):項目


關係是客戶端有很多項目。

模型


和客戶端模式的關係是

(客戶表型號名稱是客戶

class Client extends CActiveRecord{ 
    } 

和關係()方法;

return array(
     'projects' => array(self::HAS_MANY, 'Projects', 'clients_id'), 
); 

項目模型的關係是(項目表型號名稱是項目

 class Projects extends CActiveRecord{ 
     } 

和關係()方法;

return array(
      'clients' => array(self::BELONGS_TO, 'Client', 'clients_id') 
    ); 

現在 現在你可以使用以下方法來獲得CLIENT_NAME替換proejct表 的CLIENT_ID在CGridView


'dataProvider' => $model->search(), 
    'columns' => array(
     'id', 
      'project_name', 
    array(
     'name' => 'client Name', 
     'value' => '$data->clients->name', //where name is Client model attribute 
     ), 
    ) 

和 項目視圖第一頁ñCDetailView您可以使用以下

'data' => $model, 
'attributes' => array(
       'id', 
       'project_name', 
     array(
      'name'=>'Client Name', 
      'value'=>$model->clients->name , 
     ), 


,如果你有公司表(一個公司有很多客戶)客戶關係 客戶端模型

'company' => array(self::BELONGS_TO, 'Company', 'company_id'), 

你也可以通過 索引(CGridview)獲得公司名稱

array(
     'name' => 'client Name', 
    'value' => '$data->clients->company->name', //where name is company model attribute 
    ), 

,並鑑於CDetailView

array(
    'name'=>'Client Name', 
    'value'=>$model->clients->company->name , 
     ), 

+0

非常感謝分享知識。 –