在flush doctrine上设置为null的值

时间:2016-09-26 09:47:22

标签: php symfony doctrine-orm doctrine

我的代码出了问题。我只是想在我的数据库中插入一组简单的数据,但是doctrine将我的属性(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();
}

我的ORM映射:

/**
 * @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;
}

3 个答案:

答案 0 :(得分:1)

尝试清除您的学说缓存,代码看起来很好,不会成为问题。

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

答案 1 :(得分:1)

我解决了这个问题,我做了一个监听器在preUpdate上把值设为null,我完全忘了它:(

答案 2 :(得分:0)

也许你的问题是由于你的二传手中的拼写错误。 你确定你的二传手setTelVerifCode看起来完全像这样吗?

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