Php 条令实体中的时间数据类型为间隔。存在负值或24小时以上值

Php 条令实体中的时间数据类型为间隔。存在负值或24小时以上值,php,mysql,symfony,doctrine-orm,doctrine,Php,Mysql,Symfony,Doctrine Orm,Doctrine,我目前正在进行的项目应该迁移到Symfony2。 数据库已经设计了一段时间,并且已经包含数据。 最重要的是-某些表的类型为列,可能包含-08:10:58之类的负值或38:15:47->38小时、15分钟和47秒之类的24小时+值 因为我有点懒,我决定通过Symfony的应用程序/控制台。看起来应用程序/控制台运行得很好,但每次我尝试访问EntityRepository时,都会遇到一个异常 转换异常 无法将数据库值-09:18:37转换为条令类型时间。预期格式:H:i:s 在我的实体类中,我有以下

我目前正在进行的项目应该迁移到Symfony2。 数据库已经设计了一段时间,并且已经包含数据。 最重要的是-某些表的类型为列,可能包含-08:10:58之类的负值或38:15:47->38小时、15分钟和47秒之类的24小时+值

因为我有点懒,我决定通过Symfony的应用程序/控制台。看起来应用程序/控制台运行得很好,但每次我尝试访问EntityRepository时,都会遇到一个异常

转换异常

无法将数据库值-09:18:37转换为条令类型时间。预期格式:H:i:s

在我的实体类中,我有以下ORM注释

class MyCoolEntity 
{
    //
    //other stuff


    /**
     * @var \DateTime
     *
     * @ORM\Column(name="current_total_diff", type="time", nullable=false)
     */
    private $currentTotalDiff;

    //other stuff
}
另一个重要的时刻-我也需要这些时间值作为秒。在大多数情况下,我只是将TIME_添加到SECcurrent_total_diff中,以选择表别名。*作为表别名

那么,为了让它工作,我有什么选择呢?我应该考虑一个或只是使用一些像后加载或可能两者?我对Symfony2很陌生,所以我非常乐意提供一些例子和详细的想法和解释

切换到MySQL的时间戳作为columnt类型不是一个选项

更新:将秒存储为INT字段可能是解决此问题的最简单方法,但是,项目有一些强制性要求,其中之一是保持数据库处于用户友好/可读状态,因此在快速查看某个表后,您应该看到如下内容:

+----------------------+
| "current_total_diff" |
+----------------------+
| "-09:18:37"          |
| "-02:00:00"          |
| "34:10:30"           |
+----------------------+
而不是那样

+----------------------+
| "current_total_diff" |
+----------------------+
|               -33517 |
|                -7200 |
|               123030 |
+----------------------+

在DB类型中将其存储为秒有符号的int size不是一个选项?再次投票赞成在DB中仅存储为秒int。@OIS seconds可能会导致溢出,具体取决于它的最大值。当然,这是一个选择,但不是一个理想的选择。项目要求之一-数据库应该是用户友好的。有些用户只需从中选择*并应看到-07:30:00而不是-27000@V-您可以为此使用DB特定的字段类型,但所有数据库都以不同的方式处理此问题,Postgres使用interval类型,这就是为什么doctrine不为其公开字段类型,并且使用它会降低数据的可移植性。如果这不是您的问题,那么您可以自己动手创建一个自定义映射类型。