【问题标题】:Doctrine 2: How to enter a length greater than 24 hours into a "time" field原则 2:如何在“时间”字段中输入大于 24 小时的长度
【发布时间】:2012-11-03 04:28:08
【问题描述】:

我有一个有声读物数据库。其中一些书的长度超过 24 小时。我很难创建一个将映射 length 属性超过 24 小时的学说实体,因为 time 字段接受 DateTime 对象,并且超过 24 小时的任何时间都添加到第二天,因此 33 小时变为 9 小时.

<?php

namespace Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 */
class Audiobook
{
    /**
     * @var \DateTime $length
     *
     * @ORM\Column(name="length", type="time")
     */
     protected $length;

知道如何进行这项工作吗?我也在使用 Symfony2。

【问题讨论】:

  • 将长度存储为整数(以分钟或秒为单位)。然后转换为 h:m:s。
  • 是的,我最终做到了。我尝试不这样做,但在尝试“违背常规”一段时间后,我现在看到 PHP DateTime 类根本不是设计用于以这种方式处理时间的,它旨在处理 date 时间.最好以秒或分钟为单位测量这样的间隔。也许可以使用 DateInterval 创建自定义 Doctrine 类型。如果有人做到了,我想看看!

标签: datetime symfony doctrine-orm symfony-2.1


【解决方案1】:

看起来您实际上是在寻找DateInterval 而不是DateTime,因为后一个代表时间的一个时刻,而“长度”不可能。

这表示没有从DateInterval 到 SQL 类型的映射(还没有?),甚至我根本不知道任何类似间隔的 SQL 类型。你可以做的是创建一个自己的类型,将DateInterval映射到VARCHAR,格式为PT28H

【讨论】:

    猜你喜欢
    • 2013-04-03
    • 2014-09-24
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    相关资源
    最近更新 更多