У меня проблема с моим кодом. Я просто пытаюсь вставить простой набор данных в свой db, но доктрина вставляет мой атрибут (telVerifCode) как NULL.
Я сбросил свои данные и выяснил, что этот атрибут (telVerifCode) имеет некоторое значение в нем, но после того, как я сбросил его, он установлен в значение NULL.
Это мой контроллер:
$user = $this->getUser();
if ($user->getTel() != $tel || $user->getTelCode() != $telCode) {
try {
$code = $this->sendTelehopneCode($user);
} catch (\Exception $e) {
//.......
}
// update user phone verifcation fields //
$user->setTelVerifCode($code);
$user->setLastTelVerificationCodeDate(new \DateTime());
$em->persist($user);
$em->flush();
}
My ORM Mapping:
/**
* @var string
*
* @ORM\Column(name="tel_verification_code", type="string", length=255, nullable=true)
*/
protected $telVerifCode;
/**
* @var \DateTime
*
* @ORM\Column(name="last_tel_verification_code_date", type="date", nullable=true)
*/
protected $lastTelVerificationCodeDate;
Функция sendTelehopneCode:
private function sendTelehopneCode($user)
{
$code = strval(rand(100000, 999999));
$tel = $user->getTelCode() . $user->getTel();
$msg = 'code:' . $code;
$twilio = $this->get('twilio.api');
try {
$message = $twilio->account->messages->sendMessage(
"+14*******", // Verified Outgoing Caller ID or Twilio number
$tel, // The phone number you wish to send a message to
$msg
);
} catch (\Services_Twilio_RestException $e) {
throw $e;
}
return $code;
}
Я решил проблему, я сделал слушатель. На preUpdate, который ставит значение null, я полностью забыл его :(
Попробуйте очистить кэш доктрины, код выглядит отлично и не может быть проблемой.
./bin/console doctrine:cache:clear-metadata
./bin/console doctrine:cache:clear-query
./bin/console doctrine:cache:clear-result
Возможно, ваша проблема связана с опечаткой вашего сеттера. Вы уверены, что ваш setter setTelVerifCode
выглядит именно так?
public function setTelVerifCode($code)
{
$this->telVerifCode = $code;
}