【问题标题】:Inserting a mysql row with DateTime using Doctrine DQL使用 Doctrine DQL 插入带有 DateTime 的 mysql 行
【发布时间】:2013-12-02 17:44:35
【问题描述】:

我在尝试使用 Doctrine DQL 在我的 MySQL 表中插入一行时遇到了一些麻烦,具体来说,该行插入正确,但“created”列在我的表上显示 0000-00-00 00:00:00。

这是我的实体:

    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)

有人知道吗?

【问题讨论】:

    标签: php mysql datetime doctrine dql


    【解决方案1】:

    试试 1) 在构造函数中创建的集合 或者 2)使用Lifecycle CallbacksprePersist

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 2010-10-02
      相关资源
      最近更新 更多