gpt4 book ai didi

php - Zend-1048 列 'member_login' 不能为空

转载 作者:行者123 更新时间:2023-11-29 21:19:20 25 4
gpt4 key购买 nike

我尝试设置注册逻辑,但遇到问题

消息:SQLSTATE[23000]:违反完整性约束:1048 列“member_login”不能为空,查询为:INSERT INTO members (member_login) VALUES (?) enter image description here

经过几个小时的努力,仍然没有任何想法出错。这是我的源代码。有人可以给我一些想法吗?

我的模型.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'
));
}
}

注册 Controller :

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;

}

最佳答案

终于修复了这个bug。 Element 的命名出了问题。例如,在您的数据库中有“member_login”,那么元素名称应该类似于memberLogin。

关于php - Zend-1048 列 'member_login' 不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35778662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com