我正在使用Codeigniter 3.1.8和Bootstrap 4中的基本博客应用。
有几个表,其中posts
和categories
用于存储帖子类别。
每个帖子都属于一个类别:
类别名称:
我想显示带有每个帖子所属类别名称的帖子。为此,在我的帖子模型中,我有以下代码:
public function get_posts($limit, $offset) {
$this->db->order_by('posts.id', 'DESC');
$this->db->join('categories', 'posts.cat_id = categories.id', 'inner');
$query = $this->db->get('posts', $limit, $offset);
return $query->result();
}
上面的代码在
中“翻译”`SELECT * FROM `posts` INNER JOIN `categories` ON `posts`.`cat_id` = `categories`.`id` ORDER BY `id` DESC LIMIT 12`
,如果我这样做了,print_r($data['posts'])
会模糊地将帖子类别名称返回为[name] => Showbiz
。
这迫使我在帖子视图中使用以下歧义行:
<p><?php echo $post->name; ?></p>
我希望能够使用此行:
<p><?php echo $post->post_category; ?></p>
换句话说,我想要这个,但是使用Codeigniter 3语法:
`SELECT *, categories.`name` as post_category FROM `posts` INNER JOIN `categories` ON `posts`.`cat_id` = `categories`.`id` ORDER BY `id` DESC LIMIT 12`;
并且仍然能够使用Codeigniter的ORM功能。
注意:在控制器中,我有:
$data['posts'] = $this->Posts_model->get_posts($config['limit'], $config['offset']);
我想念什么?
答案 0 :(得分:0)
2.
答案 1 :(得分:0)
附加一个select
并为类别列名称语句使用别名as
,如下所示。因此,现在您可以echo $post->post_category;
<?php
public function get_posts($limit, $offset) {
$this->db->select('posts.*,categories.name as post_category');
$this->db->order_by('posts.id', 'DESC');
$this->db->join('categories', 'posts.cat_id = categories.id', 'inner');
$query = $this->db->get('posts', $limit, $offset);
return $query->result();
}