CodeIgniter版本更新 - 查询构建器的limit()生成空数组

时间:2017-01-31 16:20:10

标签: php database codeigniter codeigniter-3 query-builder

要明确的是,我根本没有使用CodeIgniter的任何经验。

分配了一个旧网站,其中CI版本最近更新为最新版本,并且某些循环不显示任何内容。注意到问题始于使用limit()函数的查询构建器行。

Home.php控制器中的

__construct()函数执行:

$this->load->orm('db_et_comu_news', 'news');

之后,index()函数具有:

$this->_data['news'] = $this->news->where('status',1)->where('id_et_cat_comu_news',2)->order_by('data','DESC')->limit(7)->find_all();

这在过去的CI版本中工作并返回了一个完美的结果数组,但是在更新之后,我得到的只是一个空数组。如果我从查询中删除limit(),请将其设为:

$this->_data['news'] = $this->news->where('status',1)->where('id_et_cat_comu_news',2)->order_by('data','DESC')->find_all();

查询返回一个良好的健康数组,但不会根据需要将我的行限制为7。

我已经检查了CI 3.1.3文档,并且正确应用了似乎的功能。有谁能帮我发现问题?

1 个答案:

答案 0 :(得分:1)

用此替换您的控制器代码。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Home extends CI_Controller
{
    function __construct() {
        parent::__construct();
    }

    function index()
    {
        $data['news'] = $this->news();

        if(!empty($data['news']))
        {
           foreach($data['news'] as $objects)
           {
           echo $objects->data;
           }
        }

    }

    function news()
    {
        $query = $this
                ->db
                ->select('*')
                ->from('db_et_comu_news')
                ->where('status',1)
                ->where('id_et_cat_comu_news',"2")
                ->order_by("data", "DESC")
                ->limit(7)
                ->get();
        if($query->num_rows()>0)
        {
            return $query->result();  // return an array of objects
        }
        else
        {
            return null;
        }
    }

}