0

我有一个将数组传递给视图的控制器。不幸的是,其中一个字段$data['c']在视图中不可用。它只有一个变量。

function view() {
    $this->load->model('rateteacher_m');
    $rate_id= $this->uri->segment(4);
    $data['rows'] = $this->rateteacher_m->get_by_id($rate_id);
    $data['answers'] = $this->rateteacher_m->get_answer_by_question_id($rate_id);
    $data['c'] = $this->rateteacher_m->check_follow($rate_id,1) ;
    $this->load->view('specific_rateteacher_v', $data);
}

还有我的模特...

function check_follow($rate_id,$user_id) {
    $count=mysql_num_rows($user_sql);
    $this->db->select('teacher_id, user_id');
    $this->db->from('teacher_follow');
    $q = $this->db->get();
    $result= $this->db->count_all_results();      
    $data['aa']=$result;
    return $data;
}

然后我尝试打印所有内容视图:

<?php foreach($c as $r) : ?>
    <?php echo $r->aa; ?>
<?php endforeach; ?>

我想在视图中打印计数,但尚未完成。我不确定我做错了什么。

4

2 回答 2

0

您的 check_follow() 方法返回一个包含一项的数组。$this->db->count_all_results();返回一个整数。因此,如果它返回 1,则该方法正在返回array('aa' => 1),仅此而已。

然后在您看来,您正在尝试回显一个对象,但它被设置为一个数组,因此请$c['aa']改用 or $r->aa

于 2013-05-03T16:38:58.023 回答
0

这是一个不同的角度。如果您的数据库结果可能是一个或多个,您可以这样做。

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

// its 1, so return the row()
if ( $query->num_rows() == 1 ) {
    return $query->row(); }

// its more then 1, return result() 
elseif( $query->num_rows() > 1 ) {
    return $query->result(); }

// no results, return false
else { return false ; }

将始终将 db 结果作为对象返回(无需在视图中显示括号)

于 2013-05-04T01:43:59.040 回答