首先显示最低的pid /父ID号

时间:2016-12-04 05:51:31

标签: codeigniter

我在下面有这个功能从我的数据库中获取pid号码。 pid是父ID。

public function test() {
    $arr = array();

    foreach ($this->make_parent_list() as $result) {
        $arr[] = $result;
    }

    print_r(implode(',', $arr));

}

输出如下4,1

但我需要先打印最低的数字。 1,4

  

问题我如何确定何时查看父ID / pid   将显示我尝试过的最低数字   $this->db->order_by('pid', 'desc');$this->db->order_by('pid', 'asc');

public function make_parent_list() {
    $this->db->where('fid', '5');

    $query = $this->db->get('forum');

    $return = array();

    foreach ($query->result() as $category)
    {
        $this->db->where('fid', $category->pid);
        $this->db->order_by('pid', 'desc');
        $query = $this->db->get('forum');

        $return[$category->pid] = $category->pid;

        foreach ($query->result() as $category)
        {

        $return[$category->pid] = $category->pid;

        }
    }

    return $return;
}

2 个答案:

答案 0 :(得分:0)

解决

我必须创建一个$ results变量,然后在foreach循环外面的sort()中包装

502479617.512
  

现在推出1,4

答案 1 :(得分:0)

我觉得你有点迷失了... order_by asc,desc确实有效。你的函数有order_by desc和一个不必要的foreach等。

假设:论坛表至少有两列pid和fid。我用

创建了一个表
fid , pid
5     1
5     4

如果您将功能简化为......

// Given the fid, return an array of pid values in ascending order
public function make_parent_list() {
    $this->db->where('fid', '5'); // Hardcoded for testing.
    $this->db->order_by('pid', 'asc');
    $query = $this->db->get('forum');
    $pid_list = array();
    foreach ($query->result() as $category) {
        $pid_list[] = $category->pid;
    }

    return $pid_list;
}

然后你只需要

$results = $this->make_parent_list();
echo implode(',', $results);

那会给你1.4的结果。

如果你在函数的order_by中将asc更改为desc,那么你将获得4,1。