无法在 Codeigniter 中从模型获取查询结果到控制器
Posted
技术标签:
【中文标题】无法在 Codeigniter 中从模型获取查询结果到控制器【英文标题】:Cannot get query result from Model to Controller in Codeigniter 【发布时间】:2017-09-15 01:16:31 【问题描述】:试图通过调用代码点火器中的存储过程从数据库中获取结果。下面是我的控制器和模型。模型工作正常,从存储过程中获取结果,并且当我在模型中执行 print_r()
时可以显示结果。但我无法在控制器方法中获得查询结果。无法理解这里的错误。
控制器:
function weeklysalesstatus()
$this->data['rpt'] =$this->reports_model->weeklysalesstatus(true);
$this->data['page_title'] ='Weekly Sales Status [ Residential ]';
print_r("here...");
$this->page_construct('reports/weeklysalesstatus', $this->data);
型号:
public function weeklysalesstatus($sender = false)
$sql = 'select * from region';
$sql1 = 'CALL GetWeeklySalesStatus()';
$query = $this->db->query($sql1);
if(count($query) > 0)
foreach (($query->result()) as $row)
$data[] = $row;
//var_dump($data);
return $data;
else
print_r("no rows");
return $data;
问题出在这一行:$this->data[$rpt] = $this->reports_model->weeklysalesstatus();
但是想不通。
谢谢
编辑:
这些错误仅在我调用存储过程 CALL 时出现。对于其他查询,它可以完美运行。那么我需要对 Codeigniter DB 类进行任何设置以通过活动记录调用存储过程吗?
【问题讨论】:
你能发布你的错误信息吗? 如何显示错误信息。它只是没有消息的空白页面。 你可以在index.php中找到"define('ENVIRONMENT',)。你应该写成define('ENVIRONMENT', 'development'); 之后你可以看到错误信息。 你能看到错误信息吗? 【参考方案1】:$q = $this->db->query('CALL GetWeeklySalesStatus');
将此行改为
$q = $this->db->query('CALL GetWeeklySalesStatus')->result();
【讨论】:
收到此错误:消息:调用数组上的成员函数 result()【参考方案2】:在模型中
public function weeklysalesstatus()
//$sql = 'select * from region';
$sql1 = 'CALL GetWeeklySalesStatus()';
$query = $this->db->query($sql1);
if(!empty($query))
$data = $query->result_array();
return $data;
else
return FALSE;
在控制器中
function weeklysalesstatus()
$rpt =$this->reports_model->weeklysalesstatus();
if ($rpt == FALSE)
echo "Empty";
else
$data['rpt'] = $rpt;
$data['page_title'] ='Weekly Sales Status [ Residential ]';
$this->page_construct('reports/weeklysalesstatus', $data);
【讨论】:
【参考方案3】:像下面这样修改控制器希望它可以工作
function weeklysalesstatus()
$this->data['rpt'] =$this->reports_model->weeklysalesstatus();
$this->data['page_title'] ='Weekly Sales Status';
$this->page_construct('reports/weeklysalesstatus', $this->data);
【讨论】:
我正在做完全相同的事情,然后尝试对代码进行不同的更改,但没有任何效果。如果我将查询从 Call 语句更改为 Select 语句,它将起作用。但是“调用你的模型
public function weeklysalesstatus($sender = false)
$sql = 'select * from region';
$sql1 = 'CALL GetWeeklySalesStatus()';
$query = $this->db->query($sql1);
$data["result"] = array();
if(count($query) > 0)
foreach (($query->result()) as $row)
$data["result"][] = $row;
//var_dump($data);
return $data;
你的控制器
function weeklysalesstatus()
$data['rpt'] =$this->reports_model->weeklysalesstatus(true);
$data['page_title'] ='Weekly Sales Status [ Residential ]';
print_r("here...");
$this->page_construct('reports/weeklysalesstatus', $data);
【讨论】:
以上是关于无法在 Codeigniter 中从模型获取查询结果到控制器的主要内容,如果未能解决你的问题,请参考以下文章
无法在 codeigniter 中从 gmail 发送电子邮件,SMTP 身份验证错误
查询中的 WHERE 子句在 CodeIgniter 3 中无法正常工作
Illuminate\Database\Query\Builder 类的对象无法转换为字符串,无法在单个查询中从两个数据库中获取数据