gpt4 book ai didi

php - CodeIgniter:在一个循环中显示两个表中的数据

转载 作者:行者123 更新时间:2023-11-29 14:51:16 24 4
gpt4 key购买 nike

假设我有这两个数据库表:

blog     comments
------- ----------
blog_id comment_id
title blog_id
content comment

现在我想浏览 3 个最新博客条目并显示该条目的标题、内容和评论数量。

为此,我创建了一个 Blog_model:

function get_entries($n)
{
if ($n < 1) {$n = 1;}

$this->db->order_by("blog_id", "desc");
$q = $this->db->get('blog', $n);

if($q->num_rows() > 0)
{
foreach ($q->result() as $row)
{
$data[] = $row;
}
return $data;
}
}

模型加载到 Controller 中并传递到 View :

$this->load->model('Blog_model');
$data['blog_rows'] = $this->Blog_model->get_entries(3);
$this->load->view('blog_view');

这给了我三个最新的博客条目。我现在可以循环遍历行并在 View 中显示内容,如下所示:

<?php foreach ($blog_rows as $row): ?>

<h2><?=$row->title;?></h2>
<a href="#" class="comments">12></a>
<p><?=$row->content;?></p>

<?php endforeach; ?>

到目前为止一切顺利。但现在棘手的部分是:

我想显示与所显示的博客条目相关的评论数量。遵循 CodeIgniter 实践,我将如何实现这一目标?

最佳答案

这里有两个关于模型方法的建议:第一个对每个血行进行查询,而第二个则进行更快的唯一查询。第二个查询未测试。

模型1

function get_entries($n)
{
if ($n < 1) {$n = 1;}

$this->db->order_by("blog_id", "desc");
$q = $this->db->get('blog', $n);

if($q->num_rows() > 0)
{
foreach ($q->result() as $row)
{
$data[] = $row;
}
return $data;
}

foreach($data AS &$blog_e)
{
$q = "SELECT COUNT(*) AS count FROM comments WHERE blog_id = ?";
$query = $this->db->query($q,array($blog_e->blog_id);
$ncomments = $query->result_array();
$blog_e->n_comments = $ncomments[0]['count'];
}
}

模型 2

function get_entries($n)
{
if ($n < 1) {$n = 1;}

$q = "SELECT blog.blog_id,title,content,COUNT(comment_id) AS n_comments
FROM blog JOIN comments ON blog.blog_id = comments.blog_id
GROUP BY blog.blog_id,title,content
ORDER BY blog.blog_id DESC
LIMIT 0,?"

$query = $this->db->query($q,array($n));

if($query->num_rows() > 0)
{
foreach ($q->result() as $row)
{
$data[] = $row;
}
return $data;
}
}

查看

<?php foreach ($blog_rows as $row): ?>

<h2><?=$row->title;?></h2>
<a href="#" class="comments"><?=$row->n_comments?>></a>
<p><?=$row->content;?></p>

<?php endforeach; ?>

关于php - CodeIgniter:在一个循环中显示两个表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5694666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com