我有点不明白Yii2属性是如何工作的。如果我有两个具有一对多关系的表(例如传统、文化)(例如,在几种文化中可能存在一个传统),我可以使用Gii生成的代码,并在模型传统中获得类似@property文化型$culture的内容,因此我可以使用(在传统视图索引中):
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'traditionname',
'culture.culturename',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>但是,在餐桌传统、书籍、aux_tradition_book中,多到多的关系又如何呢?Gii会自动生成@property Book[] $books,但是如何在GridView中使用这样的数组来显示一堆引用相同传统的书籍呢?
谢谢你的帮助。
发布于 2015-01-27 23:28:04
您可以修改gii来完成此操作,或者只需使用类似于许多到多个关系的内容来修改生成的文件。Display results while joining tables in yii2
确保您设置了热切的加载,而不是懒散加载,因为它将使您的页面非常慢。
发布于 2015-01-28 12:57:10
通过使用Mihai .的Yii2 API参考和解决方案,我最终使用了另一种更短的方法:
use yii\helpers\ArrayHelper;
....
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'traditionname',
'culture.culturename',
[
'attribute' => 'books',
'format' => 'raw', //Needed for proper rendering of HTML tags below.
'value'=>function ($model) {
return implode('<br/>------<br/>', ArrayHelper::getColumn($model->books, 'bookname'));
},
],
['class' => 'yii\grid\ActionColumn'],
],
]); ?>https://stackoverflow.com/questions/28178042
复制相似问题