获取每个级别的父类别名称

时间:2016-12-10 23:58:26

标签: codeigniter

我试图能够在列表中显示父类别名称,如下所示

想要实例的是什么

FID     Name                                Action

54      CodeIgniter // Parent               Edit

59      CodeIgniter > General // Parent     Edit

60      CodeIgniter > General > News        Edit

63      CodeIgniter > General > Lounge      Edit

65      CodeIgniter > Using CodeIgniter     Edit

64      PHP
  

目前我只能将其展示

Table 

FID     Name                                Action

54      CodeIgniter // Parent               Edit

59      General  // Parent                  Edit

60      General > News                      Edit

63      General > Lounge                    Edit

65      CodeIgniter > Using CodeIgniter     Edit

64      PHP
  

问题使用下面的模型功能如何在每个级别显示子类别的父母姓名

模型功能

public function get_parent_name($pid) {
    $this->db->select('name');
    $this->db->from('forum');
    $this->db->where('fid', $pid);
    $query = $this->db->get();

    if ($query->num_rows() > 0) {
        return $query->row()->name . ' > ';
    } else {
        return false;
    }
}

enter image description here

控制器

<?php

class Category extends MX_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->library('form_validation');
        $this->load->model('admin/forum/forum_model');
    }

    public function index() {
        $results = $this->forum_model->getcategories();

        $data['categories'] = $this->getcategoriesdata($results);

        $data['header'] = Modules::run('admin/common/header/index');
        $data['footer'] = Modules::run('admin/common/footer/index');

        $this->load->view('template/forums/category_view', $data);
    }

    public function getcategoriesdata($results = array(), $pid = 0) {
        $display = '';

        foreach ($results as $result) { 

            if ($result['pid'] != $pid) {
                continue;
            }

            $display .= '<tr>';
            $display .= '<td  class="text-center">' . $result['fid'] . '</td>';
            $display .= '<td>' . $this->get_parent_name($result['pid']) . $result['name'] . '</td>';
            $display .= '<td  class="text-center">' . anchor('admin/category/edit' .'/'. $result['fid'], 'Edit') . '</td>';
            $display .= '</tr>';

            $display .= $this->getcategoriesdata($results, $result['fid']);
        }

        return $display;
    } 

    public function get_parent_name($pid) {
        $this->db->select('name');
        $this->db->from('forum');
        $this->db->where('fid', $pid);
        $query = $this->db->get();

        if ($query->num_rows() > 0) {
            return $query->row()->name . ' > ';
        } else {
            return false;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我已在笔记本电脑中测试了您的代码。我有一个很好的解决方案&amp;它奏效了。您可以像这样在控制器中调用get_parent_name($pid)方法。

return $this->get_parent_name($query->row()->pid).$query->row()->name . ' > ';

$this->db->select('*');代替$this->db->select('name');

所以,最终的代码是:

public function get_parent_name($pid) {
    $this->db->select('*');
    $this->db->from('forum');
    $this->db->where('fid', $pid);
    $query = $this->db->get();

    if ($query->num_rows() > 0) {
        return $this->get_parent_name($query->row()->pid).$query->row()->name . ' > ';
    } else {
        return false;
    }
}