Php 如何在yii2中将MySql查询传递给ActiveDataProvider
我有一个带有连接的mysql查询,它工作得非常好。我想将结果传递给Yii2 ActiveDataProvider。 我的控制器代码看起来像 ` 和查看文件代码`Php 如何在yii2中将MySql查询传递给ActiveDataProvider,php,mysql,yii2,Php,Mysql,Yii2,我有一个带有连接的mysql查询,它工作得非常好。我想将结果传递给Yii2 ActiveDataProvider。 我的控制器代码看起来像 ` 和查看文件代码` ListView::widget([ 'dataProvider' => $ActiveDataProvider, 'options' => [ 'tag' => 'div', 'class' => 'list-wrapper
ListView::widget([
'dataProvider' => $ActiveDataProvider,
'options' => [
'tag' => 'div',
'class' => 'list-wrapper',
'id' => 'list-wrapper',
],
'pager' => [
'firstPageLabel' => 'first',
'lastPageLabel' => 'last',
'prevPageLabel' => '<span class="glyphicon glyphicon-chevron-left"></span>',
'nextPageLabel' => '<span class="glyphicon glyphicon-chevron-right"></span>',
'maxButtonCount' => 3,
],
// 'layout' => "{pager}\n{items}\n{summary}",
'summary' => false,
'itemView' => '_list',
]);
?>`
ListView::widget([
“dataProvider”=>$ActiveDataProvider,
“选项”=>[
“tag'=>“div”,
“类”=>“列表包装器”,
“id'=>“列表包装器”,
],
“寻呼机”=>[
'firstPageLabel'=>'first',
'lastPageLabel'=>'last',
“prevPageLabel'=>”,
“nextPageLabel'=>”,
“maxButtonCount”=>3,
],
//'layout'=>“{pager}\n{items}\n{summary}”,
“摘要”=>错误,
“项目视图”=>“\u列表”,
]);
?>`
由于我已经传递了QueryAll,所以ActiveDataProvider没有运行并传递错误,“query”属性必须是实现QueryInterface的类的实例,例如yii\db\query或其子类“你没有传递
QueryAll()
,你传递了函数QueryAll()
的结果,这是一个对象数组。不使用此选项:
$theme = Theme::find();
更改此项:
$query = "SELECT t.*,COUNT(d.id) AS total_downloads FROM `themes` AS T
LEFT JOIN downloads AS D
ON D.theme_id = T.id GROUP
by t.id ORDER BY total_downloads DESC LIMIT 6";
致:
不要使用queryAll()
,只需将$theme
对象作为query
param doActiveDataProvider
传递即可
并删除此项:
$connection=Yii::$app->db;
$trends = $connection->createCommand($query);
$model = $trends->queryAll();
$object = (object) $model;
很抱歉,我忘了提。我没有使用$theme=theme::find();然而我被下面的代码卡住了。这就是为什么我告诉你应该做什么。正如你所看到的,我使用了连接,所以我想使用自定义sql查询。不,你仍然不想使用自定义sql查询。而不是使用
$theme->joinWith('relationName')代码>如果不使用框架,那么使用框架的目的是什么?queryAll()有什么问题?不要使用queryAll(),只需将$theme对象作为查询参数do ActiveDataProvider传递。
$theme->select = 'YOUR SELECT HERE';
$connection=Yii::$app->db;
$trends = $connection->createCommand($query);
$model = $trends->queryAll();
$object = (object) $model;