我生成了一个获得函数attributeLabels()
的模型:
public function attributeLabels()
{
return [
'column1' => 'name of column1',
'column2' => 'name of column2',
];
}
我还在我的模型中编写了一个函数,它创建了一个SQL语句:
public function getReminders()
{
$sql = Yii::$app->db->createCommand('SELECT
[[column1]], [[column2]]
FROM {{%table}}
WHERE column1 > :value')
-> bindValue(':value', '10');
return $sql;
}
然后我创建了一个带actionIndex()
函数的控制器:
public function actionIndex()
{
$model = new TestObject();
$testmodels= new ActiveDataProvider([
'models' => $model->getReminders()->queryAll(),
]);
return $this->render('index', [
'testmodels' => $testmodels,
]);
最后我创建了一个视图
GridView::widget([
'dataProvider' => $testmodels,
'layout' => '{items}{pager}',
'columns' => ['column1', column2,],
]);
由于某种原因,结果页面的列名称为column1
和column2
。我试图创建一个listView并获得列的正确名称。为什么在这种情况下attributeLabels()
没有设置列名?我真的不想在gridview中使用label
属性。
提前谢谢!
答案 0 :(得分:0)
我会做以下事情:
tableName
简化getReminders,将其设为静态,让它返回Query
而不是Command
类TestModel扩展yii \ db \ ActiveRecord { ...
public static function tableName()
{
return {{%table}};
}
public static function getReminders()
{
$query = self::find()->select(['column1', 'column2'])
->where(['>', 'column1', 10]);
return $query;
}
...
}
请勿设置models
的{{1}},而是设置ActiveDataProvier
'models'=>的TestObject :: getReminders(),