【问题标题】:How to pass two different ids of different models from a controller to a view如何将不同模型的两个不同 id 从控制器传递到视图
【发布时间】:2017-06-25 04:22:18
【问题描述】:

我在博客文章中传递两个 ID 时遇到问题。第一个身份证 显示一个帖子,第二个计算帖子的数量。 每个都可以单独工作,但是在将两者结合起来时,它会选择一个 发错了。

这是我获取 cmets 的第一个模型的代码

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();
     }
} 

这是获取帖子的模型

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);
     }

最后是视图文件

<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> 

【问题讨论】:

  • 我将不胜感激
  • 所以你想在每个帖子中显示 cmets 的数量..?
  • 所有帖子的计数都正常工作,但我的问题是,当我点击任何帖子时,它会将我带到另一个帖子。

标签: php html css codeigniter mysqli


【解决方案1】:

请检查下面提到的解决方案。您的select cause 中有错误。当您想要来自 CI 中多个表的数据并且columnName 与 CI 相同时,查询生成器将覆盖该列的值。在这种情况下,您需要将alias 提供给columnName。请在下方查看。

$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']

这将解决您的问题。如果它不适合你,请告诉我。

【讨论】:

  • 谢谢哥们。这就像一个魅力。你拯救了我的夜晚!
猜你喜欢
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多