我在下面的代碼中加入了3個表:用戶、帖子和評論。
public function join_user_post() {
$this->db-> select('
posts.post_body。
posts.date_created,
users.username,
users.user_image,
Comments.comment_body,
評論.創建日期
')。
$this->db->from('posts') 。
$this->db->join('users', 'users.id = posts.post_user_id ')。
$this->db->join('comments', 'comments.comment_post_id = posts.post_id ' )。
$query = $this-> db->get();
return $query->result()。
}
然后通過控制器將這個陣列資料傳遞給主頁視圖:
class Home extends CI_Controller{
public function index() {
$this->load->model('user_model'/span>)。
$data['posts'] = $this-> user_model-> join_user_post();
$this->load->view("user/homepage",$data) 。
}
}
在主頁視圖中,我試圖用用戶名和用戶影像來呼應帖子,然后回圈瀏覽每個帖子的評論并呼應出來
<body>
<?php include 'navbar.php'; ?>
<?php foreach($posts as$post) 。? >
<div>
<img src="<?php echo $post->user_image ?><br>"/span>>
<?php echo $post->username ? ><br>
<?php echo $post->post_body ? ><br>
<?php echo $post->date_created ? ><br>
<?php foreach($posts as$post)。? >
<?php echo $post-> comment_body ?><br>。
<?php echo $post->date_created ? ><br>
<?php endforeach; ? >
</div>
<?php endforeach; ?>
</body>
但是我更希望得到每個帖子上的所有評論,而不是得到與特定帖子ID相關的評論,foreach在所有的評論中回圈,并在每個帖子上回顯它們,如果我洗掉foreach回圈,它將在每個帖子上只回顯一個評論 我應該怎么做才能解決這個問題呢?
uj5u.com熱心網友回復:
問題是當你把帖子和評論連接起來時,它會回傳許多關于同一帖子的評論記錄。你可以先在你的控制器中修改一下,以存盤每個帖子的評論。
function index()
{
$this->load-> model('user_model')。
$comments = $this-> user_model-> join_user_post();
$posts = array();
foreach ($comments as $comment) {
if (array_key_exists($comment-> post_id, $posts) {
$posts[$comment->post_id]['comment'] [] = $comment;
} else {
$posts[$comment->post_id]['post_body'/span>] = $comment->post_body。
$posts[$comment->post_id]['username'] = $comment-> username;
$posts[$comment->post_id]['date_created'] = $comment->date_created。
$posts[$comment->post_id]['user_image'] = $comment-> user_image。
$posts[$comment->post_id]['comment'] [] = $comment;
}
}
$data['post'] = $posts;
$this->load->view("user/homepage", $data) 。
}
而在你看來:
<div>
<img src="<?php echo $post['user_image'] ? ><br>">
<?php echo $post['username'] ?><br>
<?php echo $post['post_body'] ? ><br>
<?php echo $post['date_created'] ?> <br>
<? php foreach ($posts['comments'] as $comment) : ?
<?php echo $comment-> comment_body ?> <br>
<?php echo $comment->date_created ? ><br>
<?php endforeach; ?
</div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/311024.html
標籤:
