php – 从CodeIgniter(或任何MVC平台)中的数据库中提取数据?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 从CodeIgniter(或任何MVC平台)中的数据库中提取数据?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4263字,纯文字阅读大概需要7分钟。
内容图文
![php – 从CodeIgniter(或任何MVC平台)中的数据库中提取数据?](/upload/InfoBanner/zyjiaocheng/903/3dc5838a38474ae3b8ccd41fd54b0722.jpg)
我在模型中有这个:
public function index_loop() {
$post_user = $this->db->query("SELECT posts.post_title, posts.post_content, posts.post_date, users.username FROM posts LEFT JOIN users ON posts.user_id = users.user_id ORDER BY posts.post_ID DESC");
//$categories = $this->db->query("SELECT categories.cat_name, categories.cat_id FROM
//$comments = $this->db->query("SELECT COUNT(comment_id) FROM comments WHERE
return $post_user->result_array();
}
我需要的是显示每个帖子和评论的类别(虽然我想如果我发现通过类别而不是评论是相同的方式)
在View文件中:
<?php foreach($posts as $zz) { ?>
<div class="article">
<h2><?php echo $zz['post_title']; ?></h2>
<p>Posted by <a href=""><?php echo $zz['username']; ?></a> | Filed under <a href="#">templates</a>, <a href=>internet</a></p>
<p><?php echo $zz['post_content']; ?></p>
<p><a href=>Read more</a> | <a href=>Comments (5)</a> | <?php echo $zz['post_date']; ?></p>
</div> <?php } ?>
所以,如果我想在每个博客上循环类别,我需要该博客ID,如果我从模型中进行所有查询,我该如何获取?
同样的评论
我做一个大的复杂数据库查询(这很难但我可以做到)或者我可以做2或3个单独的小查询是不是很好?
解决方法:
Codeigniter允许您将数据库结果作为对象(例如,模型对象)返回,这使得数据更易于使用.您可以向Posts表发出初始查询,在结果集中包含posts.id字段,并将Post_model类的名称传递给$db-> query-> result()函数,告诉codeigniter您’喜欢你的结果作为Post_model类的实例返回.
然后,您可以通过post_id将Post_model类的方法定义为GetCategories,通过post_id定义GetCments,然后调用这些方法为查询返回的每个Post_model填充$categories和$comments集合.
这是一个例子,我希望它有所帮助:
public class Post_model extends CI_Model
{
// All the properties in the Posts table, as well as a couple variables to hold the categories and comments for this Post:
public $id;
public $post_title;
public $post_content;
public $post_date;
public $username;
public $categories;
public $comments;
public function index_loop()
{
return $this->GetAllPosts();
}
// function to get all posts from the database, including comments and categories.
// returns an array of Post_model objects
public function GetAllPosts()
{
// define an empty array to hold the results of you query.
$all_posts = array();
// define your sql query. NOTE the POSTS.ID field has been added to the field list
$sql = "SELECT posts.id,
posts.post_title,
posts.post_content,
posts.post_date,
users.username
FROM posts LEFT JOIN users ON posts.user_id = users.user_id
ORDER BY posts.post_id DESC";
// issue the query
$query = $this->db->query($sql);
// loop through the query results, passing a string to result() which represents a class to instantiate
//for each result object (note: this class must be loaded)
foreach($query->result("Post_model") as $post)
{
$post->categories = $this->GetPostCategories($post->id);
$post->comments = $this->GetPostComments($post->id);
$all_posts[] = $post;
}
return $all_posts;
}
// function to return categories for a given post_id.
// returns an array of Category_model objects.
public function GetPostCategories($post_id)
{
$sql = "SELECT category.id, ... WHERE post_id = ?";
$query = $this->db->query($sql, array($post_id));
$categories = array();
foreach($query->result("Category_model") as $category)
{
$categories[] = $category;
}
return $categories;
}
// function to return comments for a given post_id.
//returns an array of Comment_model objects
public function GetPostComments($post_id)
{
$sql = "SELECT comment.id, ... WHERE post_id = ?";
$query = $this->db->query($sql, array($post_id));
$comments = array();
foreach($query->result("Comment_model") as $comment)
{
$comments[] = $comment;
}
return $comments;
}
}
然后,在您的视图中,您可以将$posts数组作为Post_model对象而不是result_arrays来访问:
<?php foreach($posts as $zz) { ?>
<div class="article">
<h2><?php echo $zz->post_title; ?></h2>
<p>Posted by <a href=""><?php echo $zz->username; ?></a> |
Filed under
<?php foreach($zz->categories as $category) {
echo '<a href="#">{$category->name}</a>, ';
}
?>
</p>
<p><?php echo $zz->post_content; ?></p>
<p><a href=>Read more</a> | <a href=>Comments (5)</a> | <?php echo $zz->post_date; ?></p>
</div> <?php } ?>
至于效率问题,它将取决于很多因素(数据库与网络服务器位于同一台机器上?有多少帖子?等等).单个大型查询通常比几个较小的查询执行速度快,但需要进行性能分析才能真正确定性能增益是否值得寻求.我总是喜欢尝试编写可读/可理解的代码,而不是以增加复杂性为代价进行优化.
内容总结
以上是互联网集市为您收集整理的php – 从CodeIgniter(或任何MVC平台)中的数据库中提取数据?全部内容,希望文章能够帮你解决php – 从CodeIgniter(或任何MVC平台)中的数据库中提取数据?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。