2011-06-15 36 views
2

我想要一个简单的帮助器,它在我的数据库中记录一次命中。我创建了一个$ CI实例,并尝试访问这样的模型......

$CI->load->model('stats_model'); 
$CI->stats_model->set_hit(); 

但我得到一个错误的模型..

Severity: Notice 
Message: Undefined property: Stats_model::$db 
Filename: models/stats_model.php 
Line Number: 16 

第16行是一个简单的...

$this->db->select('*'); 

我得到了主意,从这个链接http://blog.avinash.com.np/2010/07/01/talk-to-the-database-from-a-helper-codeigniter/

我试图做到这一点$ CI->分贝......而不是$日是 - > db在模型中,但仍然没有运气,有什么想法?

HELPER

<?php 

if (!defined('BASEPATH')) 
    exit('No direct script access allowed'); 

function check_hit() { 
//stuff that uses CI 
$CI = & get_instance(); 
$CI->load->library('user_agent'); 
if ($CI->agent->is_robot()) { 
    return FALSE; 
} else { 

    //check for a 12 hour cookie 
    $check = $CI->input->cookie('stat'); 

    if ($check == false) { 
     //insert a database entry 
     $CI->load->model('Stats_model'); 
     $CI->Stats_model->set_hit(); 

     //set a cookie 

     $cookie = array(
      'name' => 'stat', 
      'value' => '1', 
      'expire' => '43200' 
     ); 

     // $CI->input->set_cookie($cookie); 
    } 
} 
} 

check_hit(); 
?> 

模型

<?php 

if (!defined('BASEPATH')) 
exit('No direct script access allowed'); 

class Stats_model extends Model { 

function Stats_model() { 
// Call the Model constructor 
    parent::Model(); 
} 

function set_hit() { 
    $date = date('Y-m-d'); 

    $this->db->select('unique_visitors'); 
    $this->db->from('daily_stats'); 
    $this->db->where('date', $date); 
    $query = $this->db->get(); 
    $date_rows = $query->num_rows(); 
    $result = $query->row(); 
    $visits = $result->unique_visitors; 
    $visits++; 

    $data = array(
     'unique_visitors' => $visits, 
     'date' => $date 
    ); 

    if ($date_rows == 1) { 
     $this->db->where('date', $date); 
     $this->db->update('daily_stats', $data); 
    } else { 
     $this->db->insert('daily_stats', $data); 
    } 
} 

} 
?> 
+0

这可能听起来很愚蠢,但是您正在加载数据库驱动程序,对不对? – 2011-06-15 20:15:28

+0

将其加载到自动加载配置文件中。如果我尝试在辅助程序中使用... $ CI-> load-> library('database');我得到一个错误...无法加载所需的类:数据库 – funkydimensions 2011-06-15 20:19:42

+0

不,如果它在自动加载,它应该没问题。我只是想检查。 – 2011-06-15 20:22:37

回答

0

这部分是有点混乱,我一会儿回来。这似乎工作。


//load the CI instance 
$this->ci =& get_instance(); 


//run a db get 
$this->ci->db->get('mytable'); 
+0

感谢您的回复,但它仍然不适合我。我试过把$ this-> ci =&get_instance();在模型函数中,但我得到相同的错误。 – funkydimensions 2011-06-15 19:59:46

+0

你可以发布你的帮手吗? – Peter 2011-06-15 20:00:27

+0

好的刚刚更新 – funkydimensions 2011-06-15 20:03:48

相关问题