2016-09-26 2 views
1

У меня проблема с моим кодом. Я просто пытаюсь вставить простой набор данных в свой db, но доктрина вставляет мой атрибут (telVerifCode) как NULL.Значение, установленное в 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(); 
} 

Мой 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

Есть ли тип данных несоответствия между исходными данными и ОРМОМ конфигурацией (строка)? – Jeet

+0

$ code является строковым данным – ghazi2008

+0

Тогда не имеет смысла быть 'null' на' flush() '. Можете ли вы поместить весь код из этого метода в контроллер? – Jeet

ответ

0

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

public function setTelVerifCode($code) 
{ 
    $this->telVerifCode = $code; 
} 
+0

Да, мой сеттер выглядит именно так: public function setTelVerifCode ($ telVerifCode) {$ this-> telVerifCode = $ telVerifCode;} – ghazi2008

1

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

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

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

Смежные вопросы