2013-12-02 2 views
1

У меня возникли проблемы с попыткой вставить строку в мою таблицу MySQL с помощью Doctrine DQL, в частности, строки вставляются правильно, но столбец «created» показывает 0000-00-00 00: 00:00 на моем столе.Вставка строки mysql с использованием DateTime с использованием Doctrine DQL

Вот моя сущность:

class Packages 
    { 
     [... more irrelevant fields ...] 
     /** 
     * @var \DateTime 
     * @ORM\Column(name="created", type="datetime", nullable=false) 
     */ 
     private $created; 
    } 

Вот мой код для вставки:

$packages = new Packages; 
    $packages->setCreated(new \DateTime("now")); 
    [... more setters here ...] 
    print_r($packages); // See below for the print_r output 
    $em = self::getEntityManager();   
    try{ 
     $em->persist($packages); 
     $em->flush(); 
     return $packages->getPackageId(); 
    }catch(\Exception $e){ 
     $this->error = $e->getMessage(); 
     return false; 
    } 

print_r выход здесь, а затем ID был возвращен правильно:

Core\Entities\Packages Object 
    (
     [..... More irrelevant fields set correctly .....] 
     [created:Core\Entities\Packages:private] => DateTime Object   
     (
      [date] => 2013-12-02 09:37:18 
      [timezone_type] => 3 
      [timezone] => America/Los_Angeles 
     ) 
    ) 

Но то это произошло

mysql> select created from packages where package_id=1694; 
    +---------------------+ 
    | created    | 
    +---------------------+ 
    | 0000-00-00 00:00:00 | 
    +---------------------+ 
    1 row in set (0.00 sec) 

У кого-нибудь есть ключ к этому поводу?

ответ

0

Попробуйте 1) набор, созданный в конструкторе ИЛИ 2) использовать Lifecycle Callbacks prePersist

+0

Ни работал. –

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