Yii2列出类别中的项目

Yii2列出类别中的项目,yii,yii2,yii2-basic-app,Yii,Yii2,Yii2 Basic App,我的控制器 public function actionIndex() { $query = Documents::find(); $docs = $query->orderBy('cate_id ASC')->all(); return $this->render('index', [ 'docs' => $docs, ]); } 我的看法 <?php foreach ($docs as $doc) { $ca

我的控制器

public function actionIndex()
{
    $query = Documents::find();
    $docs = $query->orderBy('cate_id ASC')->all();
    return $this->render('index', [
        'docs' => $docs,
    ]);
}
我的看法

<?php foreach ($docs as $doc) {  
$cate = app\models\Categories::find()->where(['id'=>$doc->cate_id])->one();?>
    <h4><?=$cate->title?></h4>
    <p><?= Html::a($doc->title, ['documents/view', 'id'=>$doc->id]) ?></p>

<?php } ?>

这样看来,我的观点是

第一类

  • 菜单项标题1
第一类

  • 菜单项标题2
第2类

  • 菜单项标题3
我希望它显示出来

类别1

  • 菜单项标题1
  • 菜单项标题2
类别2

  • 菜单项标题3
请帮我做这个

谢谢大家!

视图中的更改:

<?php 
foreach ($docs as $doc) {  
  $cate = app\models\Categories::find()->where(['id'=>$doc->cate_id])->all();?> // query for all records
  ?>
  <h4><?=$doc->title?></h4>
  <?php
  foreach ($cate as $cat {  
  ?>
  <p><?= Html::a($cat->title, ['documents/view', 'id'=>$cat->id]) ?></p>
  <?php
  }
}
?>
//查询所有记录
?>

对于您的任务,请使用Yii
ArrayHelper
轻松解决此问题

检查此链接

您可以使用
ArrayHelper::index
方法根据特定键/列对记录进行分组

在您的情况下,您必须使用“cate_id”(指您的类别id)对记录进行分组

上面的代码将生成分组数组。例如

   [
        1 =>[
              ['Menu Item Title 1','other column data','....'],
              ['Menu Item Title 2','other column data','....']
        ],
        2 =>[
              ['Menu Item Title 3','other column data','....'],
              ['Menu Item Title 4','other column data','....']
        ]

   ]
现在,您将遍历这个数组/数组对象

     <?php
     foreach($catList as $cate_id => $catItems)
     {
        $cate = app\models\Categories::find()->where(['id'=>$cate_id])->one();
        echo '<h4>'.$cate->title.'</h4>';
        foreach($catItems as $catItem)
        {

           echo '<p>'.Html::a($catItem['title'], ['documents/view', 'id'=>$catItem['id']]).'</p>';
        }

     }
     ?>

在掌握了一些Yii代码之后,试着用Yii方式编码。也就是说,在这种情况下,不要在
视图中编写查询


您可以使用model
relation
获取类别的名称

我真的不理解“foreach($catList as$cate\u id=>$catItems)”部分。你能解释一下吗?谢谢打印$catList以了解它<代码>打印($catList)
     <?php
     foreach($catList as $cate_id => $catItems)
     {
        $cate = app\models\Categories::find()->where(['id'=>$cate_id])->one();
        echo '<h4>'.$cate->title.'</h4>';
        foreach($catItems as $catItem)
        {

           echo '<p>'.Html::a($catItem['title'], ['documents/view', 'id'=>$catItem['id']]).'</p>';
        }

     }
     ?>