我已经加入了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>
答案 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存储在由分隔符分隔的字段中。但是这个选项需要更多的工作。