如何从多个表中获取结果到gridview?
How to fetch the result from multiple tables to gridview?
问题:
假设我有两个表,
Table1 Table2
-authorId -username
-moderatorId -id
目前我的观点是这样的,
[
'label' => 'Author',
'value' => function($something){
return $something->transaction->authorId ?? null;
},
'attribute' => 'author'
],
预期结果
我想在 gridview 中显示每个 post 的作者姓名,
我尝试使用 authorId 但它只显示作者的 ID。
我应该如何使用 "authorId" 列映射到 "username" 列。
提前致谢,
在您的 Table1 相关模型中添加两个活动关系(一个用于作者,一个用于主持人)以检索相关名称
设置 Table1 模型
/* ActiveRelation for Author*/
public function getAuthor()
{
return $this->hasOne(Table2Model::className(), ['id' => 'author_id']);
}
/* ActiveRelation for Moderator */
public function getModerator ()
{
return $this->hasOne(Table2Model::className(), ['id' => 'moderator_id']);
}
然后构建两个 getter 一个用于作者姓名,一个用于版主姓名
/* Getter for author name */
public function getAuthorName() {
return $this->author->username;
}
/* Getter for moderator name */
public function getModeratorName() {
return $this->moderator->username;
}
添加您的模型属性标签
/* Your model attribute labels */
public function attributeLabels() {
return [
/* Your other attribute labels */
'AuthorName' => Yii::t('app', 'Author Name'),
'ModeratorName' => Yii::t('app', 'Moderator Name')
];
}
然后你的 gridView 你可以使用新的 getters
'columns' => [
['class' => 'yii\grid\SerialColumn'],
....
....
'authorName',
'moderatorName',
['class' => 'yii\grid\ActionColumn'],
],
问题: 假设我有两个表,
Table1 Table2
-authorId -username
-moderatorId -id
目前我的观点是这样的,
[
'label' => 'Author',
'value' => function($something){
return $something->transaction->authorId ?? null;
},
'attribute' => 'author'
],
预期结果 我想在 gridview 中显示每个 post 的作者姓名, 我尝试使用 authorId 但它只显示作者的 ID。 我应该如何使用 "authorId" 列映射到 "username" 列。
提前致谢,
在您的 Table1 相关模型中添加两个活动关系(一个用于作者,一个用于主持人)以检索相关名称
设置 Table1 模型
/* ActiveRelation for Author*/
public function getAuthor()
{
return $this->hasOne(Table2Model::className(), ['id' => 'author_id']);
}
/* ActiveRelation for Moderator */
public function getModerator ()
{
return $this->hasOne(Table2Model::className(), ['id' => 'moderator_id']);
}
然后构建两个 getter 一个用于作者姓名,一个用于版主姓名
/* Getter for author name */
public function getAuthorName() {
return $this->author->username;
}
/* Getter for moderator name */
public function getModeratorName() {
return $this->moderator->username;
}
添加您的模型属性标签
/* Your model attribute labels */
public function attributeLabels() {
return [
/* Your other attribute labels */
'AuthorName' => Yii::t('app', 'Author Name'),
'ModeratorName' => Yii::t('app', 'Moderator Name')
];
}
然后你的 gridView 你可以使用新的 getters
'columns' => [
['class' => 'yii\grid\SerialColumn'],
....
....
'authorName',
'moderatorName',
['class' => 'yii\grid\ActionColumn'],
],