yii2 hasOne, 在列表显示分类名称
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii2 hasOne, 在列表显示分类名称相关的知识,希望对你有一定的参考价值。
分类表: category:[‘cid‘, ‘parent‘,‘category‘...]
新闻表:news: [‘id‘, ‘cid‘, ‘title‘...]
建立news与category的关系:使用gii的crud会自动生成如下代码:
Category:
public function getNews() { return $this->hasMany(News::className(), [‘cid‘ => ‘cid‘]); }
News:
public function getC() { return $this->hasOne(Category::className(), [‘cid‘ => ‘cid‘]); }
修改NewsController的index:
$dataProvider = new ActiveDataProvider([ ‘query‘ => News::find(), ]);
修改为:
$dataProvider = new ActiveDataProvider([ ‘query‘ => News::find()->with(‘c‘), //c即News: getC() ]);
然后再列表修改显示:
<?= GridView::widget([ ‘dataProvider‘ => $dataProvider, ‘columns‘ => [ [‘class‘ => ‘yii\grid\SerialColumn‘], ‘id‘, ‘c.category‘, //c.category就是分类名称 ‘title‘, ‘content:ntext‘, //‘image‘, // ‘keywords‘, // ‘description‘, [ ‘attribute‘ => ‘create_time‘, ‘format‘ => [‘date‘, ‘Y-m-d‘], ], // ‘update_time:datetime‘, ‘status‘, // ‘out_link‘, ‘sort‘, ‘click‘, // ‘lang‘, [‘class‘ => ‘yii\grid\ActionColumn‘], ], ]); ?>
以上是关于yii2 hasOne, 在列表显示分类名称的主要内容,如果未能解决你的问题,请参考以下文章
Yii2 - ActiveDataProvider试图获取非对象的属性
如何在yii2 gridview中为大数据表显示一行中的表头名称