CodeIgniter:调用 bool 上的成员函数 row()

由于我已从 CodeIgniter 2.2.6 升级到 3.xx,我遇到了无法解决的问题。


该模型

function get_the_continue_id_pregunta_from_level($level_type, $level)

{

    $this->db->select();

    $this->db->from('preguntas');

    $this->db->where($level_type, $level);

    $this->db->where('language', 2);

    $this->db->where("`id` NOT IN (SELECT `id_pregunta` FROM `user_as_preguntas` WHERE user_id =" . $this->session->userdata('id') .  "  )", NULL, FALSE);

    $this->db->order_by("id", "ASC"); 

    $this->db->limit(1);

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

    if(!$q->num_rows > 0) {

        $q = FALSE;

    }


    return $q;  

}

控制器

$g2 = $this->Qcm->get_the_continue_id_pregunta_from_level('level_1',$row->level_1);

$g2 = $g2->row()->id;

错误

在 bool 上调用成员函数 row()


千巷猫影
浏览 144回答 2
2回答

jeck猫

这可能是subquery你可以尝试get_compiled_select如下的问题function get_the_continue_id_pregunta_from_level($level_type, $level)    {        $this->db->select('id_pregunta');        $this->db->from('user_as_preguntas');        $this->db->where('user_id', $this->session->userdata('id'));        $where_clause = $this->db->get_compiled_select();        $this->db->select();        $this->db->from('preguntas');        $this->db->where($level_type, $level);        $this->db->where('language', 2);        $this->db->where("`id` NOT IN ($where_clause)", NULL, FALSE);        $this->db->order_by("id", "ASC");         $this->db->limit(1);        $q = $this->db->get();        if(!$q->num_rows > 0) {            $q = FALSE;        }        return $q;      }

回首忆惘然

有2个问题:首先:当您的查询没有给您任何结果时,您需要处理这种情况:在您的控制器中写入如下内容:$g2 = $this->Qcm->get_the_continue_id_pregunta_from_level('level_1',$row->level_1);if($g2){  $g2 = $g2->row()->id;}else{  echo 'no records found'; }现在你不再调用->row()->idfalse 了,没有更多的错误信息,因此错误被处理。第二:由于您的查询在迁移之前有效,您需要阅读文档并按照升级说明进行操作。很可能你错过了在你的数据库配置文件中更改$active_record = TRUE;为$query_builder = TRUE;会话库也可能有问题,早期 3.x 版本中记录了几个问题,因此请确保升级到最新版本:3.1.10
打开App,查看更多内容
随时随地看视频慕课网APP