我已经在 Yii 框架中启动了一个项目(Yii 级别:初学者)。我决定使用 WP 风格的数据库表来存储我的条目并将它们分配给不同的类别、子类别,并为条目分配多个标签。
所以基本上,这里是表格(注意这里的名字是单数的):
tbl_entry (entries) tbl_terms (name, slug of categories, subcategories, tags) tbl_term_taxonomy (category, subcategory, tag taxonomies) tbl_term_relationship (基于条目的ID,建立关系)
到目前为止,我能够获取所有内容(猫、子猫、标签)。我也能够区分类别和子类别,但我不能将它们按层次排序。
我需要他们是:
Category 1
Subcategory of Cat 1
Another subcat of Cat 1
Category 2
Subcategory of Cat 2
Another subcat of Cat 2
Yet another subcat of Cat 2
Catwegory 3
etc.
目前,它们显示如下内容:
Another subcat of Cat 1
Category 2
Subcategory of Cat 2
Another subcat of Cat 2
Category 1
Subcategory of Cat 1
Another subcat of Cat 1
Yet another subcat of Cat 2
Catwegory 3
关键是:它们以没有意义的顺序显示,更准确地说,当它们被添加到数据库中时,它们被堆叠在另一个之下。
我不确定我是否应该能够对某些东西进行分组,如果可以,是什么表和列?
我在每个表的类中都有关系,并试图将 group 子句放在那里,但没有成功。
===================== 编辑===============
我忘了说几件事。我目前正在尝试在显示时为单个条目进行这项工作(显示猫、子猫和标签)。
Controller EntryController
public function actionView($id)
{
$entry = $this->loadModel();
$relations = $entry->relations;
$this->render('view', array(
'entry' => $entry,
'relations' => $relations,
));
}
与Termrelationship.php建立主要关系的模型类Entry.php:
public function relations()
{
return array(
'relations' => array(self::HAS_MANY, 'Termrelationship', 'id',),
);
}
view.php。注意:由于它们都只是关系(猫、子猫、标签),并且来自关系表,因此它们在该表本身中没有设置任何层次结构。我必须比较分类名称以赋予它们不同的标记(并将它们放在另一个块(标签)中)。子猫在这里出现缩进: http ://screencast.com/t/CvCBJoQqD0WP只是因为它们被包裹在一个小标签中。很好,但我也希望能够列出一个主/父类别,然后是该类别的所有子类别,然后开始一个新类别,等等......
<div class="row">
<div class="col-md-6">
<blockquote>
<?php
foreach($relations as $relation):
if($relation->taxonomy['taxonomy']=='category'):
echo $relation->taxonomy->term->name . ' (Parent: '.$relation->taxonomy['parent'].')';
endif;
if($relation->taxonomy['taxonomy']=='subcategory'):
echo '<small>'.$relation->taxonomy->term->name . ' (Parent: '.$relation->taxonomy['parent'].')</small>';
endif;
endforeach;
?>
</blockquote>
</div>
<div class="col-md-6">
<?php
foreach($relations as $relation):
if($relation->taxonomy['taxonomy']=='tag'):
echo '<span class="label label-default">'.$relation->taxonomy->term->name.'</span> ';
endif;
endforeach;
?>
</div>
</div>