php - 一般错误 : 1366 Incorrect integer value with Doctrine 2. 1 和 Zend Form 更新

标签 php mysql zend-framework doctrine-orm zend-form

我正在处理提交的 Zend 表单,它使用以下代码更新 Doctrine Record,其中 $query 是使用 Doctrine 查询构建器构建的查询:

$record_array = $query->getResult();
$this->_record = $record_array[0];
if($this->getRequest()->isPost())
    {
        if ($this->_form->isValid($this->_request->getPost()))
        {
            $newEntity = $this->_form->update($this->_record);
            $this->_em->flush(); 
            $this->view->success = 'Record Saved.';
        } else {
            $this->view->errors = $this->_form->getErrors();
        }        
    }

如果记录中没有整数,即只有字符串,上面的方法就可以正常工作。但是,如果我在表单中包含在原则实体中映射为整数的字段,则会出现上述错误。

如有任何帮助,我们将不胜感激。

更新:

/**
 * @var integer $solicitorid
 *
 * @Column(name="SolicitorID", type="integer", nullable=false)
 * @Id
 * @GeneratedValue(strategy="IDENTITY")
 */
private $solicitorid;

/**
 * @var string $solicitor
 *
 * @Column(name="Solicitor", type="string", length=160, nullable=true)
 */
private $solicitor;

/**
 * @var string $address
 *
 * @Column(name="Address", type="string", length=160, nullable=true)
 */
private $address;

/**
 * @var string $town
 *
 * @Column(name="Town", type="string", length=100, nullable=true)
 */
private $town;

/**
 * @var string $county
 *
 * @Column(name="County", type="string", length=100, nullable=true)
 */
private $county;

/**
 * @var string $postcode
 *
 * @Column(name="Postcode", type="string", length=100, nullable=true)
 */
private $postcode;

/**
 * @var string $dxaddress
 *
 * @Column(name="DXAddress", type="string", length=150, nullable=true)
 */
private $dxaddress;

/**
 * @var string $phone
 *
 * @Column(name="phone", type="string", length=30, nullable=true)
 */
private $phone;

/**
 * @var string $fax
 *
 * @Column(name="fax", type="string", length=30, nullable=true)
 */
private $fax;

/**
 * @var string $email
 *
 * @Column(name="email", type="string", length=255, nullable=true)
 */
private $email;

/**
 * @var string $password
 *
 * @Column(name="password", type="string", length=30, nullable=false)
 */
private $password;

/**
 * @var integer $leadStatus
 *
 * @Column(name="lead_status", type="integer", nullable=true)
 */
private $leadStatus;

/**
 * @var string $termsref
 *
 * @Column(name="termsRef", type="string", length=10, nullable=true)
 */
private $termsref;

/**
 * @var integer $termsconditions
 *
 * @Column(name="termsconditions", type="integer", nullable=true)
 */
private $termsconditions;

/**
 * @var date $termssent
 *
 * @Column(name="termsSent", type="date", nullable=true)
 */
private $termssent;

/**
 * @var date $termssigneddate
 *
 * @Column(name="termssigneddate", type="date", nullable=true)
 */
private $termssigneddate;

/**
 * @var integer $paymentterms
 *
 * @Column(name="paymentterms", type="integer", nullable=true)
 */
private $paymentterms;

/**
 * @var integer $discountterms
 *
 * @Column(name="discountterms", type="integer", nullable=true)
 */
private $discountterms;

/**
 * @var float $discountrate
 *
 * @Column(name="discountrate", type="float", nullable=true)
 */
private $discountrate;

/**
 * @var integer $accountscontact
 *
 * @Column(name="AccountsContact", type="integer", nullable=true)
 */
private $accountscontact;

/**
 * @var date $warned
 *
 * @Column(name="warned", type="date", nullable=true)
 */
private $warned;

/**
 * @var float $feerate
 *
 * @Column(name="FeeRate", type="float", nullable=true)
 */
private $feerate;

/**
 * @var string $labourrate
 *
 * @Column(name="LabourRate", type="string", length=100, nullable=true)
 */
private $labourrate;

/**
 * @var text $specialinst
 *
 * @Column(name="SpecialInst", type="text", nullable=true)
 */
private $specialinst;

/**
 * @var text $reportinst
 *
 * @Column(name="ReportInst", type="text", nullable=true)
 */
private $reportinst;

/**
 * @var boolean $autostatement
 *
 * @Column(name="AutoStatement", type="boolean", nullable=true)
 */
private $autostatement;

/**
 * @var datetime $lastmodifed
 *
 * @Column(name="lastModifed", type="datetime", nullable=false)
 */
private $lastmodifed;

上面是实体。 当我尝试更新整数字段时出现问题。

最佳答案

你在使用 MySQL 吗?这可能是因为 MySQL 在严格模式下运行。 从 phpMyAdmin 或您使用的任何数据库管理员运行这些查询以检查数据库是否处于严格模式:

SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;

如果它返回包含 STRICT_TRANS_TABLES 的内容,您可以尝试运行:

SET @@global.sql_mode= 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

关于php - 一般错误 : 1366 Incorrect integer value with Doctrine 2. 1 和 Zend Form 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874647/

相关文章:

php - 如何在 Twig 中调用 'time_diff' 过滤器

PHP 提交选择

mysql - mysql 用于摄取 sql 文件的小于号的名称是什么?

php - 获得最高分,但删除重复用户 (SQL)

zend-framework - 每个月的第一天

php - 通过 AJAX 请求处理 Zend 身份验证失败

Magento 缺少翻译

php - 如何正确地将变量打印到 PHP 错误日志

php - 捕获异常并继续执行程序是最佳实践吗?

mysql - MySQL最好的双重替代品是什么?