2016-03-03 54 views
0

我試圖建立一個標誌邏輯電路,但遭受的問題,所述Zend- 1048列「member_login」不能爲空

消息:SQLSTATE [23000]:完整性約束違規:1048列「member_login」不能爲空,查詢是:INSERT INTO membersmember_login)VALUES enter image description here

掙扎小時,仍然沒有想法這出問題後(?)。這是我的源代碼。 任何人都可以給我一些想法?

我Model.php

<?php 

class Application_Model_Member 
{ 
    protected $_id; 
    protected $_member_login; 


    public function __construct(array $options = null) 
    { 
     if (is_array($options)) { 
      $this->setOptions($options); 
     } 
    } 

    public function __set($name, $value) 
    { 
     $method = 'set' . $name; 
     if (('mapper' == $name) || !method_exists($this, $method)) { 
      throw new Exception('Invalid member property'); 
     } 
     $this->$method($value); 
    } 

    public function __get($name) 
    { 
     $method = 'get' . $name; 
     if (('mapper' == $name) || !method_exists($this, $method)) { 
      throw new Exception('Invalid member property'); 
     } 
     return $this->$method(); 
    } 

    public function setOptions(array $options) 
    { 
     $methods = get_class_methods($this); 
     foreach ($options as $key => $value) { 
      $method = 'set' . ucfirst($key); 
      if (in_array($method, $methods)) { 
       $this->$method($value); 
      } 
     } 
     return $this; 
    } 

    public function setId($id) 
    { 
     $this->_id = (int) $id; 
     return $this; 
    } 

    public function getId() 
    { 
     return $this->_id; 
    } 

    public function setMemberLogin($text) 
    { 
     $this->_member_login = (string) $text; 
     return $this; 
    } 

    public function getMemberLogin() 
    { 
     return $this->_member_login; 
    } 


} 

我MemberMapper.php

<?php 

class Application_Model_MemberMapper 
{ 
    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_Members'); 
     } 
     return $this->_dbTable; 
    } 

    public function save(Application_Model_Member $member) 
    { 
    $data = array(
    'member_login' => $member->getMemberLogin(), 

     ); 

     if (null === ($id = $member->getId())) { 
      unset($data['member_id']); 
      $this->getDbTable()->insert($data); 
     } else { 
      $this->getDbTable()->update($data, array('member_id = ?' => $id)); 
     } 
    } 

    public function find($id, Application_Model_Member $member) 
    { 
     $result = $this->getDbTable()->find($id); 

     if (0 == count($result)) { 
      return; 
     } 
     $row = $result->current(); 

     $member->setId($row->member_id) 
       ->setMemberLogin($row->member_login); 


    } 

    public function fetchAll() 
    { 
     $resultSet = $this->getDbTable()->fetchAll(); 
     $entries = array(); 
     foreach ($resultSet as $row) { 
      $entry = new Application_Model_Member(); 
      $entry->setId($row->member_id) 
        ->setMemberLogin($row->member_login); 

      $entries[] = $entry; 
     } 
     return $entries; 
    } 
} 

DbTable: 
class Application_Model_DbTable_Members extends Zend_Db_Table_Abstract 
{ 
    protected $_name = 'members';  
} 

形式:registration.php的

<?php 
class Application_Form_Auth_Registration extends Zend_Form 
{ 
    public function init() 
    { 
     $this->setMethod('post'); 

     $this->addElement(
      'text', 'member_login', array(
       'label' => 'Username:', 
       'required' => true, 
       'filters' => array('StringTrim') 
      )); 


     $this->addElement('submit', 'register', array(
      'ignore' => true, 
      'label' => 'Sign up' 
      )); 
    } 
} 

註冊控制器:

public function signupAction() 
{ 
    $request = $this->getRequest(); 
    $regform = new Application_Form_Auth_Registration(); 

    if ($this->getRequest()->isPost()) { 
     if ($regform->isValid($request->getPost())) { 
      $member = new Application_Model_Member($regform->getValues()); 
      $mapper = new Application_Model_MemberMapper(); 
      $mapper->save($member); 
      return $this->_helper->redirector('/books/view'); 
     } 
    } 

    $this->view->regform = $regform; 

} 

回答

0

最後我修復了這個錯誤。元素的命名出錯了。例如,在你的數據庫中有「member_login」,那麼元素名稱應該和memberLogin一樣。

相關問題