Как отобразить категорию для каждого сообщения в codeigniter - PullRequest
0 голосов
/ 17 ноября 2018

Я хочу отображать категорию для каждого из моих сообщений.С помощью учебных пособий мне удалось создать MY_Model, но я не могу отобразить категорию для каждого сообщения.

Это моя модель сообщения:

<?php
class Post_m extends MY_Model
{
    protected $_table_name = 'posts';
    protected $_order_by = 'pubdate desc, id desc';
    protected $_timestamps = TRUE;
    public $rules = array(
        'pubdate' => array(
            'field' => 'pubdate',
            'label' => 'Publication date',
            'rules' => 'trim|required|exact_length[10]'
        ),
        'title' => array(
            'field' => 'title',
            'label' => 'Title',
            'rules' => 'trim|required|max_length[100]'
        ),
        'slug' => array(
            'field' => 'slug',
            'label' => 'Slug',
            'rules' => 'trim|required|max_length[100]|url_title'
        ),
        'body' => array(
            'field' => 'body',
            'label' => 'Body',
            'rules' => 'trim|required'
        )
    );

    public function get_new ()
    {
        $post = new stdClass();
        $post->title = '';
        $post->slug = '';
        $post->body = '';
        $post->name = '';
        $post->post_image = '';
        $post->pubdate = date('Y-m-d');
        return $post;
    }

    public function set_published(){
        $this->db->where('pubdate <=', date('Y-m-d'));
    }

    public function get_recent($limit = 3){

        // Fetch a limited number of recent articles
        $limit = (int) $limit;
        $this->set_published();
        $this->db->limit($limit);
        return parent::get();
    }

    public function get_categories()
    {
        $this->db->order_by('name');
        $query = $this->db->get('categories');
        return $query->result_array();
    }

}
?>

Теперь я хочу отобразитькатегория по имени.Вот что у меня есть:

<div class="table-responsive">
    <table class="table table-striped table-sm">
        <thead>
        <tr>
            <th>#</th>
            <th>Title</th>
            <th>Posts</th>
            <th>Category</th>
            <th>Date</th>
            <th></th>
        </tr>
        </thead>
        <tbody>
        <?php if(count($posts)): foreach ($posts as $key => $post)  if ($key >= 1) { ?>
        <tr>
            <td><?php echo $key; ?></td>
            <td><?php echo anchor('admin/posts/edit/' . $post->id, $post->title); ?></td>
            <td><?php echo e(limit_to_numwords(strip_tags($post->body), 10)); ?></td>
            <td><?php echo $post->category_id; ?></td>
            <td><?php echo $post->pubdate; ?></td>
            <td><?php echo btn_edit('admin/posts/edit/' . $post->id); ?></td>
            <td><?php echo btn_delete('admin/posts/delete/' . $post->id); ?></td>
        </tr>
        <?php } ?>
        <?php else: ?>
        <tr>
            <td class="center" colspan="3">We could not find any articles.</td>
        </tr>
        <?php endif; ?>
        </tbody>
    </table>
</div>

Если вы заметили, я добавил $post->category_id, но он отображает только INT, а не название категории.

Пожалуйста, помогите!!

1 Ответ

0 голосов
/ 25 ноября 2018

Вы не опубликовали свой контроллер, поэтому я не совсем уверен, как вы используете свою текущую модель, но если вы также хотите отобразить название категории, в которой находится каждое сообщение, вам нужно использовать объединение, как это:

public function get_posts() {

    $this->db->select('
      categories.id AS category_id,
      categories.name,
      posts.id,
      posts.title,
      posts.body,
      posts.pubdate
    ');
    $this->db->from('posts');
    $this->db->join('categories', 'posts.category_id = categories.id');
    return $this->db->get()->result_array();

}

Что он делает, так это то, что он получает все строки из таблицы сообщений, и для каждой строки сообщения он также получает соответствующую информацию о категории (включая имя) из таблицы категорий. Он может найти правильную информацию о категории, используя идентификатор категории, который находится в каждой строке сообщения. Затем он возвращает информацию из обеих таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...