首页 > 代码库 > [moka同学]Yii2.0循环查询并对结果累加求和

[moka同学]Yii2.0循环查询并对结果累加求和

在控制器中查询好数据  $model

在视图中输入

                <?php foreach($model as $key=>$r):?>
                <tr class="text-center">
                    <td><?=$r->id?></td>
                    <td><?=$r->name?></td>
                    <td><?php echo Province::find()->where([‘country_id‘=>$r->id])->count(); ?></td>
                    <td>
                        <?php
                        //通过国家ID-->找到省ID--->城市,统计城市$province_record = Province::find()->where(["country_id" => $r->id])->all();
                        if(!empty($province_record)) {
                            $city_num =0;
                            foreach ($province_record as $record => $p) {
                                //单个省对应的城市数量
                                $city_count = City::find()->where(["province_id" => $p->id])->count();
                                //全部加起来才是国家对应的城市数量
                                $city_num += $city_count;
                            }
                            echo $city_num;
                        }else{
                            echo ‘-‘;
                        }
                        ?>
                    </td>
                    <td>
                        <a href="http://www.mamicode.com/<?= Url::toRoute([‘update‘, ‘id‘ => $r->id]) ?>" >编辑国家</a>
                        <span class="cpmain" data-handle="confirm" data-url="<?= Url::toRoute([‘deletee‘, ‘id‘ => $r->id]) ?>">删除</span>
                    </td>
                </tr>
                <?php endforeach; ?>

技术分享

技术分享

城市数量统计解释 [省表中有国家的id,城市表中有省的id,但是国家和城市表中间没有关联,所以需要在省表中通过国家ID,找出省ID,然后在通过省ID去城市表中查找城市。]

1.通过国家ID在省表中查询省ID

  $province_record = Province::find()->where(["country_id" => $r->id])->all();

2.需要判断一下是否查询到了省ID,然后再根据省ID,在城市表中去查询城市。

if(!empty($province_record)) {
                            $city_num =0;
                            foreach ($province_record as $record => $p) {
                                //单个省对应的城市数量
                                $city_count = City::find()->where(["province_id" => $p->id])->count();
                                //全部加起来才是国家对应的城市数量
                                $city_num += $city_count;
                            }
                            echo $city_num;
                        }else{
                            echo ‘-‘;
                        }

3.根据省ID查询出来的是单个省的城市的数量,我们需要统计国家中的城市数量,所以需要做累加

技术分享

 

 

 

 

$model

[moka同学]Yii2.0循环查询并对结果累加求和