0

2つのテーブルを取得してコントローラーに渡すのに問題があります。

モデル内:

function get_all_entries() {
$query = $this->db->get('entry');
return $query->result();
$this->db->select('entry_id , count(comment_id) as total_comment');    
$this->db->group_by('entry_id');
$comment = $this->db->get('comment');
return $comment->result(); 
}

コントローラー内:

$data['query'] = $this->blog_model->get_all_entries(); 
$this->load->view('blog/index',$data);

変数をコントローラーに戻す$queryにはどうすればよいですか?$comment私はそれを間違っていると思います。

4

2 に答える 2

2

同じメソッドで2回戻ることは許可されていないため、これを使用します

function get_all_entries() 
{
    $query  = $this->db->get('entry');
    $data[] = $query->result();

    $this->db->select('entry_id , count(comment_id) as total_comment');    
    $this->db->group_by('entry_id');
    $comment = $this->db->get('comment');
    $data[] =   $comment->result(); 
    return $data;
}

編集:

コントローラー内

function index(){
    $this->load->model('mymodel');
    $result = $this->mymodel->get_all_entries();
    $entries = $result[0] ;
    $comments = $result[1] ;

    $data['entries'] =  $entries;
    $data['comments '] =  $comments;

}
于 2012-09-04T10:34:57.713 に答える
1

問題は$query->result()、最初に戻ってきて、return関数が現在の関数を停止するため、次のステップが処理されないことです。

最善の方法は、$querygetと$commentgetのいずれかに2つのメソッドを作成することです。

あなたの問題の代替案は

function get_all_entries() {
    $query = $this->db->get('entry');
    $this->db->select('entry_id , count(comment_id) as total_comment');    
    $this->db->group_by('entry_id');
    $comment = $this->db->get('comment');
    return array($query->result(),$comment->result()); 
}

次に、コントローラーで

list($data['query'],$data['comment']) = $this->blog_model->get_all_entries();
$this->load->view('blog/index',$data);
于 2012-09-04T09:40:00.303 に答える