致命错误:调用未定义的方法stdClass :: result_array()CodeIgniter

时间:2016-01-31 03:34:29

标签: php codeigniter

我试图通过将3个不同的数组从控制器传递到视图(从数据库中获取数据)来填充视图中的3个表。但是我得到了一个错误

Fatal error: Call to undefined method stdClass::result_array() in C:\xampp\htdocs\SEP\application\views\ManagerViewProjectDatabase.php on line 39

控制器方法为

function ManagerProjects()
{
    $this->load->model('ViewProjectsModel');
    $new=$this->ViewProjectsModel->ManagerViewProjects('new');
    $ongoing=$this->ViewProjectsModel->ManagerViewProjects('inprogress');
    $completed=$this->ViewProjectsModel->ManagerViewProjects('completed');
    $data=array('new'=>$new, 'inprogress'=> $ongoing,'completed'=>$completed);
    $this->username=$this->session->userdata('username');
    $this->DashBoardMainView($this->username);
    $this->load->view('ManagerViewProjectDatabase',$data);
}

模型类函数为

function ManagerViewProjects($status)
{
    $this->db->select('*');
    $this->db->from('project');
    $this->db->where('status',$status);
    $query=$this->db->get();
    $q1=$query->row();
    return $q1;
}

,视图为

                    <tbody>
                    <?php foreach ($new->result_array() as $row): ?>
                        <tr>
                            <td><?php echo $row['project_id'];?></td>
                            <td><?php echo $row['name'];?></td>
                            <td><?php echo $row['start_date'];?></td>
                            <td><?php echo $row['deadline'];?></td>
                            <td><?php echo $row['description'];?></td>
                            <td><?php echo $row['language'];?></td>
                            <td><?php echo $row['framework'];?></td>
                        </tr>
                    <?php endforeach; ?>
                    </tbody>

ManagerViewProjectDatabase第39行是foreach的开头。

我是代码点火器的新手,所以我不知道这里发生了什么错误。请指出我正确的方向。提前致谢

3 个答案:

答案 0 :(得分:3)

你的模态问题。模型类函数是

所以改变你的模型代码就像这样

function ManagerViewProjects($status)
{
$this->db->select('*');
$this->db->from('project');
$this->db->where('status',$status);
$query=$this->db->get();
return $query;
}

您的代码结果转换为行并返回,因此只返回一个结果。

所以你返回$ query变量以返回所有结果。

此代码对您有用

答案 1 :(得分:0)

在模型页面中使用result_array():

按如下方式更改您的代码:

模型:

$this->db->select('*');
$this->db->from('project');
$this->db->where('status',$status);
$q1=$this->db->get()->result_array();
return $q1;

控制器:

function ManagerProjects()
{
   $this->load->model('ViewProjectsModel');
   $new=$this->ViewProjectsModel->ManagerViewProjects('new');
   $ongoing=$this->ViewProjectsModel->ManagerViewProjects('inprogress');
   $completed=$this->ViewProjectsModel->ManagerViewProjects('completed');
   $data['result']=array('new'=>$new, 'inprogress'=> $ongoing,'completed'=>$completed);
   $this->username=$this->session->userdata('username');
   $this->DashBoardMainView($this->username);
   $this->load->view('ManagerViewProjectDatabase',$data);
}

查看:

  <tbody>
     <?php foreach ($result as $key=>$value): ?>
      <tr>
      <td><?php echo $value['project_id'];?></td>
      <td><?php echo $value['name'];?></td>
      <td><?php echo $value['start_date'];?></td>
      <td><?php echo $value['deadline'];?></td>
      <td><?php echo $value['description'];?></td>
      <td><?php echo $value['language'];?></td>
      <td><?php echo $value['framework'];?></td>
      </tr>
     <?php endforeach; ?>
  </tbody>

答案 2 :(得分:0)

你也可以像这样重写模型函数:

function ManagerViewProjects($status)
{
  $this->db->where('status',$status);
  return $this->db->get('project');
}

它变得更加紧凑和可读。