Я обрабатываю представленную форму Zend, которая обновляет запись Doctrine Record, используя следующий код, где $ query – это запрос, построенный с использованием построителя запросов доктрины:
$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(); } }
Вышеописанное работает отлично, если в записи нет целых чисел, то есть только строк. Тем не менее, я получаю ошибку выше, если я включаю поля в форму, которые отображаются как целые числа в объекте doctrine.
Любая помощь будет оценена по достоинству.
ОБНОВИТЬ:
/** * @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';