codeigniter递归模型函数返回空白但在正确显示的模型中打印时
这是我的代码,
for controller
$ commision_arr = $这 - > billing_model-> root_commision($ category_manager [ 'ID']);
并在模型中
public function root_commision($ id)
{$sql="SELECT * FROM tbl_mst_category WHERE id = '".$id."'"; $query = $this->db->query($sql); $row=$query->row_array(); if($row['parent']!=0) { $this->root_commision($row['parent']); } else return $row;
}
答案 0 :(得分:0)
递归很棘手吧?
我认为问题是你只返回最深层元素的id,但是没有将它返回给调用方法 - 所以它只适用于调用父id的情况。我无法测试下面的代码,但它应该指向正确的方向。 NB,它将行作为对象返回,而不是像代码那样返回数组。
在更多的学术说明中,如果表格很大,那么为这些类别中的每一个预先计算这些根ID可能会更好。它会使查询更快 - 递归并不快。看看transitive closures
public function root_commision($id,$root_found = FALSE)
{
// returns FALSE if the id is not found, or the parent row.
$query = $this->db->get_where('tbl_mst_category', array('id' => $id));
if ($query->num_rows() > 0 )
{
$row = $query->first_row();
if (($row->parent ) != 0 )
{
return $this->root_commision($row_id);
}
else
{
return $row;
}
}
else
{
return FALSE;
}
}
答案 1 :(得分:0)
你必须在通话时间返回功能,然后才能得到 递归函数的值只是在函数调用之前添加“return”关键字。
public function root_commision($id)
{
$sql="SELECT * FROM tbl_mst_category WHERE id = '".$id."'";
$query = $this->db->query($sql);
$row=$query->row_array();
if($row['parent']!=0)
{
return $this->root_commision($row['parent']);
}
else
return $row;
}