如何寻找父分类pid为0?

问题描述

数据库结构

id, name, pid

数据

1, 手机, 0
2, oppo, 1
3, 小米, 1
4, R11, 2
5, 小米6, 3
6, 冰箱, 0
7, 格力, 6

问题: 已知id为4, 如何查找第一层的分类?

tip:程序越简洁越好

阅读 3.8k
5 个回答

Thinkphp3.2.3

$cid = 4;
while ($cid = M('category')->where(array('id' => $cid))->getField('pid'))
{
    dump($cid);
}

如果数据出现问题,可能会导致程序die

好像只能递归查询....或者增加一个type类型字段(将手机,冰箱等这种大类提取出来),因为我看到你的数据结构例如oppo,小米等都属于手机这个大类,所以如果增加一个字段会比较好查询,缺点就是要修改表结构。 手机回答的…

这种设计做不到一次查询。。

从数据库取出来应该为这种数据格式$a,然后通过索引取值就好了

array(
    array(
        'id' => 1,
        'name' => '手机',
        'pid' => 0
    ),
    array(
        'id' => 2,
        'name' => 'oppo',
        'pid' => 1
    ),
    array(
        'id' => 3,
        'name' => '小米',
        'pid' => 1
    ),
    array(
        'id' => 4,
        'name' => 'R11',
        'pid' => 2
    ),
    array(
        'id' => 5,
        'name' => '小米6',
        'pid' => 3
    ),
    array(
        'id' => 6,
        'name' => '冰箱',
        'pid' => 0
    ),
    array(
        'id' => 7,
        'name' => '格力',
        'pid' => 6
    ),
)
var_dump($a[4]['pid']);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题