Zend Framework - 在非对象上选择()

时间:2011-11-23 10:23:26

标签: zend-framework zend-db-table

编辑23/11:解决方案成立......我在构造函数中写了$ _db而不是$ this-> _db!什么是NOOB!

我尝试在ZF应用程序中创建一个新模型。 我收到一个错误:

Fatal error: Call to a member function select() on a non-object in [...]/models/TrackingPageMapper.php on line 86

我是ZF的新用户,我想我什么都忘了。

这是我的班级代码:

/**
 * TrackingPageMapper
 * @author Raphaël Deschler - developpeur@la-ligne-web.com
 * @version 0.1
 */

class Default_Model_TrackingPageMapper
{
    private $_db;

/**
 * __construct
 */
public function __construct() 
{
    $_db = Zend_Db_Table::getDefaultAdapter();
}

#-----[Public Section]

/**
 * addView()
 * @param EtId, etablissement id
 * 
 * Check :
 * 1) If this is the first click of the day for this IP on this page
 * 2) If this is the first click of the month for this IP
 * 3) Save or not
 * 
 * @return void
 * 
 */
public function addView($EtId)
{
    $today = getDate();
    $ip = $this->getRealIp();

    //Check If is the IP exists
    $this->ipExists($ip, $EtId);

    //print_r($today);




}

#-----[Private Section]

/**
 * getRealIp()
 * @return varchar(15)
 * 
 */
private function getRealIp()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))
    {
      $ip = $_SERVER['HTTP_CLIENT_IP'];
    }
    elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
      $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip = $_SERVER['REMOTE_ADDR'];
    }

    return $ip;
}

/**
 * ipExists()
 * @param Ip address
 * @param EtId, etablissement id
 * 
 * @return false if ip !exists
 * @return array of ip infos if exists
 * 
 */
public function ipExists($Ip, $EtId = null)
{
    $myQuery = $this->_db->select()
                         ->from('tracking_ip', 'idtracking_ip')
                         ->where('ip = ?',$Ip);

    $result = $this->_db->fetchAll($myQuery);

    print_r($result);
}
}

我称这个模型为:

$oTrack = new Default_Model_TrackingPageMapper;
$oTrack->addView($Id);

任何人都可以帮助我?

感谢您的支持,

修改

var_dump($_db);

object(Zend_Db_Adapter_Pdo_Mysql)#76 (12) {
  ["_pdoType":protected]=>
  string(5) "mysql"
  ["_numericDataTypes":protected]=>
  array(16) {
    [0]=>
    int(0)
    [1]=>
    int(1)
    [2]=>
    int(2)
    ["INT"]=>
    int(0)
    ["INTEGER"]=>
    int(0)
    ["MEDIUMINT"]=>
    int(0)
    ["SMALLINT"]=>
    int(0)
    ["TINYINT"]=>
    int(0)
    ["BIGINT"]=>
    int(1)
    ["SERIAL"]=>
    int(1)
    ["DEC"]=>
    int(2)
    ["DECIMAL"]=>
    int(2)
    ["DOUBLE"]=>
    int(2)
    ["DOUBLE PRECISION"]=>
    int(2)
    ["FIXED"]=>
    int(2)
    ["FLOAT"]=>
    int(2)
  }
  ["_defaultStmtClass":protected]=>
  string(21) "Zend_Db_Statement_Pdo"
  ["_config":protected]=>
  array(7) {
    ["username"]=>
    string(4) "riad"
    ["password"]=>
    string(7) "xxxxxx"
    ["dbname"]=>
    string(8) "riad_dev"
    ["charset"]=>
    string(4) "utf8"
    ["driver_options"]=>
    array(1) {
      [1002]=>
      string(14) "SET NAMES utf8"
    }
    ["persistent"]=>
    bool(false)
    ["options"]=>
    array(3) {
      ["caseFolding"]=>
      int(0)
      ["autoQuoteIdentifiers"]=>
      bool(true)
      ["fetchMode"]=>
      int(2)
    }
  }
  ["_fetchMode":protected]=>
  int(2)
  ["_profiler":protected]=>
  object(Zend_Db_Profiler)#74 (4) {
     ["_queryProfiles":protected]=>
     array(0) {
     }
    ["_enabled":protected]=>
    bool(false)
    ["_filterElapsedSecs":protected]=>
    NULL
    ["_filterTypes":protected]=>
    NULL
  }
  ["_defaultProfilerClass":protected]=>
  string(16) "Zend_Db_Profiler"
  ["_connection":protected]=>
  NULL
  ["_caseFolding":protected]=>
  int(0)
  ["_autoQuoteIdentifiers":protected]=>
  bool(true)
  ["_allowSerialization":protected]=>
  bool(true)
  ["_autoReconnectOnUnserialize":protected]=>
  bool(false)
   }

1 个答案:

答案 0 :(得分:0)

找到解决方案...我在构造函数

中写了$_db而不是$this->_db