PHP Codeigniter数据库帮助程序类“没有使用表”

时间:2012-10-06 20:05:56

标签: php mysql database codeigniter orm

好的,这显然不是完整的代码,但这是错误所在的代码。

$this->db->select('post_likes');
$this->db->from('user_dash_posts');
$this->db->where('post_idn', $idn);
$this->db->where('isactive', '0');
if($this->db->count_all_results() > 0)
{
    $dataDB = $this->db->get();

关于我在这里展示的最后一行的get()陈述,我得到了“没有使用过表”。我仍然是整个CI数据库类/帮助器的新手,因为我曾经更多关于手写完整的查询器。但我正在尝试在ORM层上学习自己,并更好地熟悉它们。然而,这是我的问题的无声点。我试图找出我在这个陈述中做错了什么,修复是什么,如果可能的话,解释我是怎么做错的,所以我可以理解而不是再次。

2 个答案:

答案 0 :(得分:1)

根据documentation

  

通常,当Active Record呼叫完成时,所有存储的信息将被重置以进行下一次呼叫。

如果要重用查询,请使用可在同一页面底部找到的缓存方法。完成后不要忘记刷新缓存:

$this->db->start_cache();
$this->db->select('post_likes');
$this->db->from('user_dash_posts');
$this->db->where('post_idn', $idn);
$this->db->where('isactive', '0');
$this->db->stop_cache();

if($this->db->count_all_results() > 0) {
     $dataDB = $this->db->get();
}
$this->db->flush_cache();

编辑:

使用单个查询而不是两个查询的另一个选项:

$this->db->select('post_likes');
$this->db->from('user_dash_posts');
$this->db->where('post_idn', $idn);
$this->db->where('isactive', '0');
$query = $this->db->get();

if($query->num_rows() > 0) {
     $dataDB = $query->result();
}

答案 1 :(得分:0)

您只需删除$this->db->from('user_dash_posts');行,然后将您的表名添加到get()函数中,如下所示:$dataDB = $this->db->get('user_dash_posts');