Как отладить сбой записи в БД с помощью Doctrine и Symfony2? - PullRequest
2 голосов
/ 06 ноября 2011

В контроллере у меня это после отправки формы и isValid()

// ...
$em = $this->getDoctrine()->getEntityManager();
$em->persist($form->getData());
$em->flush();
// ...

Я проверил содержимое $form->getData(), и он выглядит нормально, но не записывает его в таблицу. Я не получаю никаких ошибок в журналах. Как мне начать отладку этого?

1 Ответ

1 голос
/ 06 ноября 2011

в моем классе Entity, который был для регистрации пользователя, у меня было поле даты создания.Для заполнения этого поля у меня было

// this is the WRONG version
class User{

    //...
    /**
     * @ORM\Column(type="datetime")
     */
    protected $created;


    //...
    public function __construct()
    {
        $this->created = date("Y-m-d H:i:s");
    }


    public function setCreated(\DateTime() $created)
    {
        $this->created = $created;
    }

}

Однако, что я должен был иметь:

/** 
 * ... other orm settings
 * @ORM\HasLifecycleCallbacks()
 */
class User{

    /**
     * @ORM\Column(type="datetime")
     */
    protected $created;

    //....

    /**
     * @ORM\prePersist
     */
    public function setCreatedValue()
    {
        $this->created = new \DateTime();
    }

}

Причина, по которой я не заметил это, заключается в том, что в журнал не было зарегистрировано никакой ошибкилог-файлы.Я отправлял эту форму как вызов ajax и не думал искать ответ на этот вызов ajax на ошибку, пока не включил firebug (полагался на консоль chrome по умолчанию)

Не знаюпомните точную ошибку, которая может вернуться, но она была около DateTimeType.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...