2016-09-26 5 views
1

Ich habe ein Problem mit meinem Code. Ich versuche nur, eine einfache Menge von Daten in meine db einzufügen, aber doctrine fügt mein Attribut (telVerifCode) als NULL ein.Wert auf null auf flush Doktrin gesetzt

Ich habe meine Daten ausgegeben und herausgefunden, dass das Attribut (telVerifCode) einen gewissen Wert darin hat, aber nach dem Flush wird es auf NULL gesetzt.

Dies ist mein Controller:

$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(); 
} 

Meine 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 Funktion:

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

Gibt es eine Datentypkonflikt zwischen Originaldaten und ORM-config (string)? – Jeet

+0

$ code ist ein string data – ghazi2008

+0

Dann macht es keinen Sinn, 'null' auf' flush() 'zu sein. Kannst du den gesamten Code von dieser Methode in den Controller setzen? – Jeet

Antwort

0

Vielleicht ist Ihr Problem auf einen Tippfehler in Ihrem Setter zurückzuführen ist. Sind Sie sicher, dass Ihr Setter setTelVerifCode genau so aussieht?

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

ja absolut mein Setter sieht genau so aus öffentliche Funktion setTelVerifCode ($ telVerifCode) {$ this-> telVerifCode = $ telVerifCode;} – ghazi2008

1

Versuchen Sie, Ihre Doktrin-Caches zu löschen, der Code sieht gut aus und kann nicht das Problem sein.

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

ich das Problem gelöst, machte ich einen Hörer auf Preupdate ein, die den Wert null bringt, ich habe es ganz vergessen :(

Verwandte Themen