代码之家  ›  专栏  ›  技术社区  ›  felipetnh

如何让原则2以字符串形式返回日期时间?

  •  3
  • felipetnh  · 技术社区  · 7 年前

    我对原则2.5和日期时间字段有问题。

    我的数据库中有几个DateTime字段,在原则1.2中从未遇到过任何问题

    现在我正在将我的应用程序升级到Doctrine 2.5,而QueryBuilder和DateTime字段有问题。

    我的问题是:

    $data = $em->createQueryBuilder()
        ->select('u.id, u.user_id, u.datecreate')
        ->from(self::CART_TABLE, 'u')
        ->setMaxResults(1)
        ->getQuery()->getOneOrNullResult(HYDRATE_ARRAY);
    

    结果如下:

    Array
    (
        [id] => 1
        [user_id] => 16
        [datecreate] => DateTime Object
            (
                [date] => 2015-03-06 20:02:26.000000
                [timezone_type] => 3
                [timezone] => America/Sao_Paulo
            )
    
    )
    

    原则1.2返回:

    Array
    (
        [id] => 1
        [user_id] => 16
        [datecreate] => 2015-03-13 18:22:35
    )
    

    实体中的变量声明为:

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="datecreate", type="datetime", nullable=true)
     */
    private $datecreate;
    

    如果我将“type=”datetime“更改为“type=”string“它确实有效。

    我实际上需要返回一个字符串,而不是DateTime对象。我如何才能做到这一点?更改实体是唯一的方法吗?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Denis Alimov    7 年前

    你可以改变方法,比如

    public function getDatecreate()
    {
       return $this->datecreate->format('Y-m-d H:i:s');
    }
    
        2
  •  0
  •   felipetnh    7 年前

    最后,我将所有getter和setter都改为“string”,而不是“\ DateTime”,这就解决了我的问题。