如何组合查询结果并使用codeigniter返回结果

时间:2013-03-27 11:19:45

标签: codeigniter

我是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;
            }
         ?>

1 个答案:

答案 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的组合结果。