gpt4 book ai didi

php - 如何将多对多关系查询结果放入yii2中的 GridView 中?

转载 作者:行者123 更新时间:2023-11-29 23:01:35 26 4
gpt4 key购买 nike

我正在使用 yii2 开发内容标签系统。

我有一个 Content(PK:id) 表、一个 Tag(PK:id) 表和一个名为 Content_Tag (PK:content_id, tag_id) 的联结表。

现在我想在关键字 View 页面上的 GridView 中显示具有相同关键字的所有内容(可排序,可搜索,就像内容索引页一样)。

我根据以下文档在关键字 Class 中使用 via:

 /**
* @return \yii\db\ActiveQuery
*/
public function getContent()
{
return $this->hasMany(Content_Tag::className(), ['content_id' => 'id']);
}

/**
* @return \yii\db\ActiveQuery
*/
public function getContents()
{
return $this->hasMany(Tag::className(), ['tag_id' => 'tag_id'])->viaTable('content_tag', ['content_id' => 'id']);
}

虽然我可以使用keyword->contents获取内容,但我认为它以数组形式返回,而不是ActiveQuery作为content::find() > 是。

我基于 ContentSearch 模型创建了一个新的 KeywordContentSearch 模型:

//$query = Content::find();
$query = Keyword::findOne($params['keyword_id'])->contents;

并在操作 View 中修改 Controller

public function actionView($id)
{
$searchModel = new KeywordContentSearch();
$dataProvider = $searchModel->search([Yii::$app->request->queryParams, 'keyword_id'=>$id]);

return $this->render('index', [
'model' => $this->findModel($id),
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}

现在错误日志在非对象的搜索模型中显示 $query

如何处理?

最佳答案

使用关键字->getContents() 而不是关键字->内容。完成

关于php - 如何将多对多关系查询结果放入yii2中的 GridView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28460102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com