要明确的是,我根本没有使用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文档,并且正确应用了似乎的功能。有谁能帮我发现问题?
答案 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;
}
}
}