0
编辑23/11:解决方案建立...我写了$ _db而不是$ this - > _ db在构造函数中!什么是NOOB!
我尝试在我的ZF应用程序中创建一个新模型。 我得到一个错误:Zend Framework - 在非对象上选择()
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 - [email protected]
* @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)
}
我不明白为什么构造不应该公开。这并不能解决问题。无论如何谢谢 –
无论如何做一个var_dump($ this - > _ db);在你使用select之前,看看你得到了什么。 –
已经做到了。 _db工作。我编辑我的答案写转储 –