我试图能够在列表中显示父类别名称,如下所示
想要实例的是什么
表
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;
}
}
控制器
<?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;
}
}
}
答案 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;
}
}