如何在Yii2中显示来自另一个表中每行数据的表和查询的数据

时间:2015-04-01 16:19:50

标签: php mysql yii

我有两张桌子 - 动物和动物类型。

animals_type中的列: id 类型

动物专栏: id 名称 animals_type

我想渲染动物类型列表并在同一页面上存在动物。

对于渲染动物类型I,创建模型Animals_type,控制器Animals_TypeController

<?php
namespace frontend\controllers;

use yii\web\Controller;
use yii\data\Pagination;
use app\models\Animals_type;

class Animals_typeController extends Controller
{
    public function actionIndex()
    {
        $query = Animals_type::find();

        $pagination = new Pagination([
            'defaultPageSize' => 10,
            'totalCount' => $query->count(),
        ]);

        $Animals_type = $query->orderBy('id')
            ->offset($pagination->offset)
            ->limit($pagination->limit)
            ->all();

        return $this->render('index', [
            'animals_type' => $Animals_type,
            'pagination' => $pagination,
        ]);
    }
}

并查看index.php

<?php
use yii\helpers\Html;
use yii\widgets\LinkPager;

?>
    <h1>Animals Type</h1>
    <ul>
        <?php foreach ($animals_types as $animals_type):?>
            <li>
                <?= Html::encode("{$animals_type->type} ({$animals_type->id})") ?>:
            </li>
        <?php endforeach; ?>
    </ul>

<?= LinkPager::widget(['pagination' => $pagination]) ?>

如何查询每种类型的动物清单?

1 个答案:

答案 0 :(得分:1)

创建关系 animals 之后,你可以这样使用它:

<?php foreach ($animals_types as $animals_type):?>
    <li>
        <?= Html::encode("{$animals_type->type} ({$animals_type->id})") ?>:
    <?if($animals_type->animals):?>
        <ul>
            <?php foreach ($animals_type->animals as $animal):?>
                <?= Html::encode("{$animal->name} ({$animal->id})") ?>:
            <?php endforeach; ?>
        </ul>
    <?endif?>
    </li>
<?php endforeach; ?>