我有一张如下表格,
id | name |parent
---| --- | ---
1 |vehicle|0
2 |car |1
3 |test |0
4 |maruti |2
5 |alto |4
6 |test2 |3
我的类别ID为5.现在我想要id 5的第一个父类别。
id 5的第一个父类别是1(车辆)
为此我需要运行4个查询来获得它。
例如,
public function getParentCategory($catId)
{
$cat = mysql_fetch_array(mysql_query('select id,parent from category where id=$catId'));
if ($cat['parent'] == 0) {
return $cat['id'];
} else {
return $this->getParentCategory($cat['id']);
}
}
现在上面的函数运行3次以获取类别alto
那么,如果不以递归方式运行查询,有没有简单的方法可以让结果更容易?
答案 0 :(得分:0)
我认为你应该从db中获取所有类别,然后在php中选择当前类别。 示例
$categories = mysql_fetch_array(mysql_query('select id,parent from category'));
foreach($categories as $cat){
$this->categories[$cat['id']][] = $cat;
}
选择类别:
public function getParentCategory($catId)
{
if ($this->categories[$catId]['parent'] == 0) {
return $this->categories[$catId]['id'];
} else {
return $this->getParentCategory($this->categories[$catId]['parent']);
}
}