0

今日、Codeigniter で論理的な問題に出くわしました。4時間後、ここで聞いたほうがいいと思いました。

私のプロジェクトのメインページには以下が含まれています:

  • 上位の投稿 (属性: タイトル、ロゴ、抜粋)
  • 各投稿の上位コメント (属性: メンバー名、アバター)

私の問題は、各投稿のトップコメントを取得することです。

Code Igniter を使用していない場合は、次のようにします。

<?php
foreach( $posts as $post ) {
    echo 'Post Title: '.$post['title'].'<br/>';

    $top_commenters = $this->get_top_commenters($post['id']);
    foreach( $top_commenters as $commenter ) {
        echo '<img src="'. $commenter['avatar'] .'"/><br/>';
    }
}

?>

上位のコメント投稿者を取得するために、各投稿の ID を関数に渡していることに気付いたと思います。しかし、CodeIgniter ではビューからコントローラーを呼び出すことができません。

私が使用する最後のソリューションは Ajax です。しかし、ここで何か助けてくれることを願っています。

前もって感謝します!

更新: 要求に応じて、ここに私のモデル関数とコントローラー関数があります:

//Model Function
function get_popular_posts() {

    $row = $this->db->query('
        SELECT * FROM posts
        INNER JOIN popular_posts ON posts.id = popular_posts.pid
        ORDER BY rank DESC LIMIT 6
    ');

    return $row->result_array();
}

//Model Function
function get_top_commenters($post_id){

    $row = $this->db->query('
        SELECT *
        FROM users
        WHERE username
        IN (
        SELECT username
        FROM comments WHERE pid = '. $post_id .')
        ORDER BY likes DESC LIMIT 6
    ');

    return $row->result_array();
}
4

2 に答える 2