消息:尝试在Codeigniter中获取非对象的属性

Kin*_*ino 1 php codeigniter

我的模型页面中有这个代码:

 public function getAll($researcherpk){
 $this->db->select('*');
 $this->db->from('research');
 $this->db->join('researcher', 'researcher = lastname');
 $this->db->where('researcherpk', $researcherpk); 
 return $this->db->get()->row_array();
Run Code Online (Sandbox Code Playgroud)

但是当我在View页面上使用它时

Age: <?php echo $data['age'];?>        // this work

<?php   foreach ($data as $v){ ?>          //this has an error

  <tr>
      <td><?php echo $v->title?></td>
      <td><?php echo $v->track_records?></td>
  </tr>
<?php } ?>
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Message: Trying to get property of non-object
Run Code Online (Sandbox Code Playgroud)

在我的控制器页面中:

 public function researcher($researcherpk){

 $this->load->model('ResearchModel');

 $result['data'] = $this->ResearchModel->getAll($researcherpk);
 $this->load->view('researcher',$result);

 }
Run Code Online (Sandbox Code Playgroud)

您认为这里的问题是什么?对于它或更改,我的替代解决方案是什么?

Alb*_*bzi 9

将您的回报更改为:

return $this->db->get()->result_array();
Run Code Online (Sandbox Code Playgroud)

然后尝试使用$v['title']$v['track_records']

<?php foreach ($data as $v): ?>
  <tr>
    <td><?php echo $v['title']?></td>
    <td><?php echo $v['track_records']?></td>
  </tr>
<?php endforeach; ?>
Run Code Online (Sandbox Code Playgroud)

查看codeigniter文档以了解更多信息.

result_array():

此函数将查询结果作为纯数组返回

这就是你想要的.

你混合它:

row_array():

此函数返回单个结果行.如果您的查询有多行,则只返回第一行.

这不是你想要的.