Значение установлено равным нулю в доктрине сброса

1

У меня проблема с моим кодом. Я просто пытаюсь вставить простой набор данных в свой 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;
}
  • 0
    Есть ли несоответствие типов данных между исходными данными и конфигурацией orm (строка)?
  • 0
    $ code это строковые данные
Показать ещё 6 комментариев
Теги:
doctrine
doctrine2

3 ответа

1

Я решил проблему, я сделал слушатель. На preUpdate, который ставит значение null, я полностью забыл его :(

1

Попробуйте очистить кэш доктрины, код выглядит отлично и не может быть проблемой.

./bin/console doctrine:cache:clear-metadata
./bin/console doctrine:cache:clear-query
./bin/console doctrine:cache:clear-result
0

Возможно, ваша проблема связана с опечаткой вашего сеттера. Вы уверены, что ваш setter setTelVerifCode выглядит именно так?

public function setTelVerifCode($code)
{
    $this->telVerifCode = $code;
}
  • 0
    да, абсолютно мой сеттер выглядит в точности как эта открытая функция setTelVerifCode ($ telVerifCode) {$ this-> telVerifCode = $ telVerifCode; }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню