我想在yii中使用tbgridview显示这个sql查询。
这是我的控制者。
public function actionSVI(){
$list = Workstation::model()->listSvi();
$this->render('svi',array(
'list'=>$list,
));
}
我的模型和SQL查询。
public function listSvi(){
$svi = Yii::app()->db->createCommand()
->select('*')
->from('workstation')
->where('ws_company_id=:id',array(':id'=>1))
->queryAll();
return $svi;;
}
我目前正在使用此代码显示我的查询。
<?php
foreach($list as $each){
$company = Workstation::model()->findByPK($each['ws_id']);
echo "<tr><td>" . $company->companyName ."</td><td>". CHtml::link(CHtml::encode($company->ws_id), array('view','id'=>$company->ws_id))."</td><td>" .$company->branchName ."</td>","<td>". $company->departmentName. "</tr></td>";
}
&GT;
我只想使用这个tbgridview显示它。
<?php $this->widget('bootstrap.widgets.TbGridView', array(
'type'=>'striped',
'dataProvider'=>$dataProvider,
'template'=>"{items}",
'columns'=>array(
'companyName',
'branchName',
'departmentName',
'ws_id',
array(
'class'=>'bootstrap.widgets.TbButtonColumn',
'template'=>'{view}',
'buttons'=>array(
'view'=>array('icon'=>'icon-search'),
),
),
),
)); ?>
<?php $this->endWidget();?>
答案 0 :(得分:1)
我认为执行我认为您想要做的最简单的方法是创建一个CActiveDataProvider
并使用 作为您的小部件的dataProvider。此外,如果Workstation
是活动记录,则可以执行以下操作:
$criteria = new CDbCriteria(
array(
'condition'=>"ws_company_id = '1'"
));
$dataProvider = new CActiveDataProvider('Workstation',array('criteria'=>$criteria));
或类似的东西。
然后将该对象发送到您的视图。
答案 1 :(得分:0)
如果您使用自己的SQL查询数据,请尝试CSqlDataProvider
$count=Yii::app()->db->createCommand('SELECT COUNT(*) FROM tbl_user')->queryScalar();
$sql='SELECT * FROM tbl_user';
$dataProvider=new CSqlDataProvider($sql, array(
'totalItemCount'=>$count,
'sort'=>array(
'attributes'=>array(
'id', 'username', 'email',
),
),
'pagination'=>array(
'pageSize'=>10,
),
));
// $dataProvider->getData() will return a list of arrays.