Yii2在加入后显示数据

时间:2016-03-25 14:53:45

标签: yii2 yii2-basic-app

我已经加入了2个表格,现在我想在字段<th>Categories name</th>中显示类别的名称。我怎么能用<?php foreach ($posts as $post){ ?>做到这一点?我是否像<?=$post->categories.name?>那样渲染?我被困在这里。

谢谢。

我的控制器:

  public function actionIndex()
{

     $query = posts::find()->leftJoin('categories', 'posts.cate_id = categories.id');
     $cates = Categories::find()->all();
     $posts= $query->orderBy(['create_date' => SORT_DESC])->all();
     $images = Images::find()->all();
     $searchModel = new PostsSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'posts' => $posts,
        'dataProvider' => $dataProvider,
            'searchModel' => $searchModel,
            'cates' => $cates,
            'images' => $images,
    ]);
}

我的观点:

<thead>
<tr>
    <th>ID</th>
    <th>Name</th>
    <th>Create Date</th>
</thead>
<tbody>
<?php foreach ($posts as $post){ ?>
<tr>
    <td><?= $post->id ?></td>

     <th><?= Html::a($post->name, ['post/view', 'id'=>$post->id]) ?></th>

    <td><?= $post->create_date ?></td>

    </tr>
    <?php } ?>
     </tbody>

1 个答案:

答案 0 :(得分:0)

与帖子一样循环浏览类别。它的原理相同。

foreach($posts as $post)
    foreach($post->categories as $category)
        echo $category->name;

这是基于您在模型中定义了正确关系的假设。

即。通过外键:

public function getCategories()
{
    return $this->hasMany(Category::className(), ['post_id' => 'id']);
}

你似乎反过来了。你可以在post中使用category_id,但是它只限于一个类别。除非,您将ID存储在由分隔符分隔的字段中。但是这个选项需要更多的工作。