【问题标题】:CodeIgniter version update - Query builder's limit() producing empty arrayCodeIgniter 版本更新 - 查询生成器的 limit() 产生空数组
【发布时间】:2017-01-31 16:20:09
【问题描述】:

需要说明的是,我以前完全没有使用 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 文档,并且功能 似乎 已正确应用。谁能帮我找出问题所在?

【问题讨论】:

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


    【解决方案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;
            }
        }
    
    }
    

    【讨论】:

    • 我自己也得出了这个结论,并希望我可以使用更简单的答案,因为我需要在很多领域做到这一点,看来这是正确的答案,谢谢你的帮助我重申这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    相关资源
    最近更新 更多