为什么这个模型在控制器中工作时会返回“非对象错误”?

时间:2012-07-17 03:29:45

标签: php debugging codeigniter

在我的控制器中,我从那里获取数据(工作正常):

$data['query'] = $this->db->query("MY DB QUERY");  
$this->load->view('shopci_view', $data);

从类模型函数中获取数据:

    class Shopci_model extends CI_Controller {

      function __construct()
      {
        parent::__construct(); //model constructor
      }

      //display sale itmes on shopci_view.php
      function sale_items()
      {    

        $query = $this->db->query('MY DB QUERY - SAME AS ABOVE');

        return $query->result();
      }

  }

新控制器功能:

//load model, auto connect to db
$this->load->model('Shopci_model', '', TRUE);    
//Display items for sale
$data['query'] = $this->Shopci_model->sale_items();  
$this->load->view('shopci_view', $data);  

ERROR:

  

致命错误:在非对象中调用成员函数result()   shopci_view

这是我切换到模型之前视图中的行(没有更改视图):

<?php foreach($query->result() as $row): ?>

感谢任何帮助。

谢谢。

2 个答案:

答案 0 :(得分:1)

在模型中,将$ query作为result()数组返回给控制器。

所以你不能再使用'foreach $ query-&gt; result()' - 因为你已经这样做了;

这应该有效

  <?php foreach($query as $row): ?> 

如果您愿意,只需从

更改模型
 return $query->result(); 

 return $query;

答案 1 :(得分:1)

在模型中,您希望返回要传递给控制器​​的数据。所以在你的模型中你会有

function sale_items()
{
    $query = $this->db->query(SAME AS OLD);
    return $query;
}

然后您的控制器将是相同的,您的视图中的foreach应该是以下

<?php foreach ($query as $row): ?>