我是codeigniter的新手。 我使用以下代码递归执行查询。
假设$ q查询选择4 id(10,11,20,24)
然后为每个id showreply函数(在foreach中)递归调用,然后如何返回组合结果。
$resultq3 = $this->showreply($reply_id);
<?php
public function showreply($reply_id)
{
$q1 =$this->db->select('*')
->from('forum_reply AS fr')
->where('fr.parent_id',$reply_id1)
->order_by('fr.id ')->get();;
foreach($q1->result_array() as $row4)
{
$id = $row4['id'];
$parent_id = $row4['parent_id'];
if($parent_id!=0)
{
$this->showreply($id);
}
}
return $result;
}
?>
答案 0 :(得分:0)
我真的不明白你在这里问的是什么。也许显示showReply函数会有所帮助,但是你已经有了合并的结果并且在你的foreach中将它分开,那么问题是什么?另外你为什么要将reply_id分配给reply_id1?那是什么意思?只需在查询中使用$ reply_id。
你也正在执行一个if语句,因为你可以在查询本身中过滤出你不想要的id(并且你是否真的会有一个id = 0的id?)
事实上,我越看这段代码就越困惑。 $ id在哪里填充$ this-&gt; showreply($ id)?
<?php
public function showreply($reply_id)
{
$q1 =$this->db->select('*')
->from('forum_reply AS fr')
->where('fr.parent_id',$reply_id)
->where('fr.parent_id !=',0)
->order_by('fr.id ')->get();;
//$i=0;
foreach($q1->result_array() as $row4)
{
$parent_id = $row4['parent_id'];
$this->showreply($id);
}
//below is the actual answer to your question on how to return the combined results.
return $q1->result_array();
}
?>
好的,在重读了你的问题后,我想我有了更好的理解。如果你将id作为一个数组传递:
$reply_id = array(10,11,20,24);
然后,您可以修改要使用的查询:
$this->db->where_in('fr.parent_id', $reply_id);
这会将结果返回为包含所有4个ID的组合结果。