在codeigniter中从foreach循环返回一行


Returning one row from foreach loop in codeigniter

我有这个模型:

public function get_products_by_slug($slug)
    {
        $this->db->select('*');
        $this->db->from('products');
        $this->db->where('slug', $slug);
        $query = $this->db->get();
        return $query->result(); 
    }

和这个控制器:

public function products($category)
    {
        $data['products_by_category'] = $this->products_model->get_products_by_slug($category);
        if (empty($data['products_by_category']))
        {
            show_404();
        }
        $data['main_content'] = 'pages/products_by_category';
        $this->load->view('templates/template', $data);
    }

并且在视图的页面标题作为页面中的横幅,我想使用这两个函数来抓取只是在数据库中的第一个类别字段使用它作为标题。我知道在模型中有一种方法可以只取第一行。但是我想做的不是另一个模型,我想使用上面的函数来使用它的标题和页面的其余部分来显示所有的产品。

查看页面:

<?php foreach($products_by_category as $row){
    echo '<div class="container">';
    echo '<h1>'.$row->category(1).'</h1>';
    echo '<hr/>';
    echo '</div>'; } ?>

现在通过上面的方式,它将使用与数据库中相同的类别名称创建尽可能多的目录。我想要的只是一个名称的标题

在网上搜索了很多之后,答案很简单。您不需要foreach循环,只需使用传递的变量,其中包含数组中的行号和字段名。就像那样。

<?php
    echo '<div class="container">';
        echo '<h1>'.$products_by_category[1]['category'].'</h1>';
        echo '<hr/>';
    echo '</div>'; 
  ?>