Search code examples
phpzend-frameworkzend-db

Issue in the Mapper Code in Zend Frame Work


Notice: Undefined variable: entryMessage in /var/www/Employee/application/models/EmployeeMapper.php on line 34 Fatal error: Call to a member function setEmployeeId() on a non-object in /var/www/Employee/application/models/EmployeeMapper.php on line 34 

This is the error i am getting i try to display the entered fields , I checked the database and the fields are getting saved , I am posting the Employee Mapper .Please check the code and tell a solution , thanks in advance

class Application_Model_EmployeeMapper
 {
 protected $_dbTable;

 public function setDbTable($dbTable)
 {
    if (is_string($dbTable)) {
     $dbTable = new $dbTable();
   }
if (!$dbTable instanceof Zend_Db_Table_Abstract) {
  throw new Exception('Invalid table data gateway provided');
}
$this->_dbTable = $dbTable;
return $this;
 }

 public function getDbTable()
 {
if (null === $this->_dbTable) {
  $this->setDbTable('Application_Model_DbTable_Employee');
}
return $this->_dbTable;
 }

 public function fetchAll()
  {
   $table = $this->getDbTable();
   $resultSet = $table->fetchAll($table->select()->order('EMPLOYEE_ID'));
   $entries   = array();
    foreach ($resultSet as $row) {
     $entry = new Application_Model_Employee();
      $entryMessage->setEmployeeId($this->$row->EMPLOYEE_ID)
       ->setFirstName($row->FIRST_NAME)
        ->setLastName($row->LAST_NAME)
        ->setEmail($row->EMAIL)
       ->setPhoneNumber($row->PHONE_NUMBER)
    ->setHireDate($row->HIRE_DATE)
    ->setJobId($row->JOB_ID)
    ->setSalary($row->SALARY);
  $entries[] = $entry; 
}
return $entries;
 }

public function save(Application_Model_Employee $employee)
{
  $data = array(
  'EMAIL'          => $employee->getEmail(),
  'FIRST_NAME'     => $employee->getFirstName(),
  'LAST_NAME'      => $employee->getLastName(),
  'PHONE_NUMBER'   => $employee->getPhoneNumber(),
  'HIRE_DATE'      => $employee->getHireDate(),
  'JOB_ID'         => $employee->getJobId(),
  'SALARY'         => $employee->getSalary(),

  );

Solution

  • Error you're getting is very clear, you should always read and try to understand the error message that you get, it gives you solution to most of the common problems. So always make a habit of reading and understanding the error message you get. Here,

    Notice: Undefined variable: entryMessage in /var/www/Employee/application/models/EmployeeMapper.php on line 34
    

    Notice says, undefined variable; which means that your variable $entryMessage is not defined. And the second part of the error that you are getting:

    Fatal error: Call to a member function setEmployeeId() on a non-object in /var/www/Employee/application/models/EmployeeMapper.php on line 34
    

    is very obvious since you are trying to call setEmployeeId() function from $entryMessage which has not been defined, yet you are assuming it to be an object and using it as an object.

    I am assuming that $entryMessage you are using should have been $entry

    These are quite simple and are not suitable to be asked in SO actually.

    Once again, my suggestion to you are,

    • Always read what the error message says, it is what you are supposed to be using for debugging any bugs in the code
    • If you are new to programming you should perhaps use IDE's (netbeans, eclipse, etc..) which actually shows the usage of variables and function and syntax error in your code.
    • Always do your part of research and ask question only if not found or successful, and always show what you attempted. Others are there to help you but not to solve everything for you. :)