1

私はコードイグナイターが初めてです。次のコードを使用して、クエリを再帰的に実行しました。

$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;
            }
         ?>
4

1 に答える 1

0

あなたがここで何を求めているのか、私にはよくわかりません。showReply 関数を表示すると役立つかもしれませんが、既に結合された結果があり、それを foreach で分割しているので、何が問題なのでしょうか? また、なぜreply_idをreply_id1に割り当てているのですか? そのポイントは何ですか?クエリで $reply_id を使用するだけです。

また、クエリ自体で不要な ID を除外できるため、ほとんど意味のない if ステートメントを実行しています (そして、真剣に = 0 の ID を持つつもりですか?)

実際、このコードを見れば見るほど混乱します。$this->showreply($id) の $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 がすべて含まれた 1 つの結合された結果として結果が返されます。

于 2013-03-27T11:57:21.493 に答える