2017-06-25 14 views
0

ブログの投稿に2つのIDを渡す際に問題が発生しています。最初のIDは で、1つの投稿を表示し、2番目のIDは投稿数をカウントします。 それぞれはうまく機能しますが、2つを統合すると、間違った投稿 が選択されます。異なるモデルの2つの異なるIDをコントローラからビューに渡す方法

これは、これはポスト

class News_model extends CI_Model { 
    function get_one_news($news_id) 
    { 
     $this->db->select('*, news.id as id'); 
     $this->db->from('news'); 
     $this->db->join('users' , 'users.id = news.user_id'); 
     $this->db->where('news.id' , $news_id); 
     $query = $this->db->get(); 
     return $query->first_row('array'); 
    } 
    function latestnews()  { 
     $this->db->select(" 
     news.*,users.*,comments.*,COUNT(comments.post_id) AS num_comments"); 
     $this->db->from('news'); 
     $this->db->join('users' , 'users.id = news.user_id'); 
     $this->db->join('comments' , 'comments.post_id = news.id'); 
     $this->db->group_by('comments.post_id'); 
     $this->db->order_by('news.date_added','desc');  
     $this->db->limit(4); 
     $query = $this->db->get(); 
     return $query->result_array(); 
    } 
} 

をフェッチするモデルであり、ここで私のコントローラは

function view($id) 
    {  
     $data['news'] = $this->news_model->get_one_news($id); 
     $data["latest_news"] = $this->news_model->latestnews();   
     $data['comments'] = $this->m_comment->get_comment($id);  

     $data['content'] = 'single'; // template part 
     $this->load->view('includes/template',$data); 
    } 

あるコメント

class News_model extends CI_Model {  
    function get_comment($id) 
    { 
     $this->db->select('comments.*,users.username'); 
     $this->db->from('comments'); 
     $this->db->join('users','users.id = comments.user_id', 'left'); 
     $this->db->where('post_id',$id); 
     $this->db->order_by('date_added','asc'); 
     $query = $this->db->get(); 
     return $query->result_array(); 
    } 
} 

を取得した最初のモデルのために私のコードです最後にビューファイル

<div id="sidebar" class="col-md-3 fix-left"> 
       <!---- Start Widget ----> 
       <div class="widget wid-vid"> 
        <div class="heading"> 
         <h4>Latest News</h4> 
        </div> 
        <div class="content"> 

         <div class="tab-content"> 

          <div id="most" class="tab-pane fade in active"> 


           <div class="post wrap-vid"> 
           <?php if(count($latest_news)) { 
          foreach($latest_news as $l_news){ ?> 
            <div class="zoom-container"> 
             <div class="zoom-caption"> 
             <a href="<?php echo base_url()?bulletins/view/<?php echo $l_news['id']?>"></a> 
             </div> 
            <img src="<?php echo base_url('assets/images/'.$l_news['image'])?>" 
style="height:80px;width:100px;"/> 

            </div> 
            <div class="wrapper"> 
            <h5 class="vid-name"><a href="<?php echo base_url('bulletins/view/'.$l_news['id'])?>"><?php echo 
substr(strip_tags($l_news['title']), 0, 15).'..';?></a></h5> 
              <div class="info"> 
              <h6>By <a href="#"><?php echo $l_news['username']?></a></h6> 
              <span><i class="fa fa-calendar"></i><?php echo date('F jS, Y' , strtotime($l_news['date_added']))?></span> 
              <span><i class="fa fa-comment-o">/i><?php echo 
$l_news['num_comments'];?></span>           
              &nbsp; 
              </div> 
             &nbsp; 
            </div> 
             <?php }}?> 

           </div> 

           </div> 

         </div> 
        </div> 
       </div> 
+0

私は援助を感謝します – vinn

+0

あなたは各投稿のコメントの数を表示したいですか? –

+0

カウントはすべての投稿について正しく機能していますが、私の問題は投稿をクリックすると別の投稿になります。 – vinn

答えて

1

以下の解決策を確認してください。 select causeにエラーがあります。 CI内の複数のテーブルのデータが必要で、columnNameがCIクエリビルダーと同じ場合は、その列の値が上書きされます。この場合、aliascolumnNameとする必要があります。下記をご確認ください。

$this->db->select('news.id as newsId,users.id as userId,news.*,users.*,comments.*, COUNT(comments.post_id) as num_comments'); 

あなたのビューファイルでは、以下のコードを変更する必要があります。

$l_news['id']を見つけて、あなたの問題を解決します$l_news['newsId']

これと交換してください。それがあなたのために働かないなら私に知らせてください。

+0

おかげさまで、これは魅力的に機能しました。あなたは私の夜を救った! – vinn

関連する問題