如何在视图中使用数据库对象

时间:2012-11-29 18:31:26

标签: php codeigniter

使用$query->row()时,我无法将数据传递到我的视图中。在控制器中使用它时,我似乎只能获取值。

以下是模型:

public function get_post($post_id) {

    $this->db->select('id, date, title');
    $this->db->from('posts');
    $this->db->where('id', $post_id);
    $this->db->limit(1);

    $query = $this->db->get();

    $row = $query->row();

    $row->title = html_purify($row->title);
    $row->date_posted_iso = date('c', $row->date);

    return $row;
}

控制器:

public function post($post_id) {

    $row = $this->post_model->get_post($post_id);
    $this->data['post'] = $row;

    $this->data['meta_title'] = $row->title;

    $this->template->build('post/show_post', $this->data);

}

观点:

<?php 

foreach ($post as $row): 

echo $row->date;
echo $row->title;

endforeach;

?>

控制器中的行$this->data['meta_title'] = $row->title;正常工作,但我不想在控制器中明确定义所有这些变量。

我已尝试使用foreach而不使用Object of class stdClass could not be converted to string

如何使用$query->row()正确回显我的视图中的值?

2 个答案:

答案 0 :(得分:0)

当您返回一行时,您不需要foreach循环,请尝试将您的观看代码更改为:

<?php  
    echo $post->date;
    echo $post->title;
?>

在控制器的$post数组中定义$row元素时,变量应为post而不是data

答案 1 :(得分:0)

尝试这样做.............

 public function post($post_id)
 {

   $row = $this->post_model->get_post($post_id);

   $model = array();

   $model['post'] = $row;

   $this->template->build('post/show_post', $model);
}

在视图中,你可以这样做

foreach($post as $data)

  {

      echo $data['title'];
  }