Yii2 传多个SQL行结果查看

Yii2 Pass multiple SQL row result to view

我遇到了一个关于我正在尝试执行的查询的问题:

SELECT o.name, p.org_id as organization_ID, COUNT(p.id) FROM publications AS p JOIN organizations as o WHERE o.id = p.org_id GROUP BY org_id

它打印出我想要的所有数据。

回到Yii2做这个查询的时候,有些犹豫

$totalpubperorg = Publication::find()->select(['org_id, COUNT(id)'])->from('publications')->join('INNER JOIN','organizations','publications.org_id = organizations.id')->groupBy('org_id');

在我看来,这给了我:

NULL NULL NULL array(1) { [0]=> string(17) "org_id, COUNT(id)" } NULL NULL array(1) { [0]=> string(12) "publications" } array(1) { [0]=> string(6) "org_id" } array(1) { [0]=> array(3) { [0]=> string(10) "INNER JOIN" [1]=> string(13) "organizations" [2]=> string(38) "publications.org_id = organizations.id" } } NULL NULL NULL array(0) { } NULL NULL NULL NULL NULL NULL NULL bool(false) string(22) "app\models\Publication" NULL NULL NULL NULL NULL NULL NULL 

我在这样的视图上传递查询结果:

        return $this->render('pupbs',
    [
        'totalpubperorg' => $totalpubperorg
    ]);

我想我可以简单地使用 foreach 循环显示每个结果:

        <?php
        foreach($totalpubperorg as $tppo){
            var_dump($tppo);
        }
    ?>

您缺少对 all() 方法的调用,该方法将 return 来自查询的模型:

 foreach($totalpubperorg->all() as $tppo){
     var_dump($tppo);
 }

看看官方文档:Querying data