gpt4 book ai didi

Symfony2实体Time类型返回格式

转载 作者:行者123 更新时间:2023-12-02 10:49:20 24 4
gpt4 key购买 nike

我有一个节省地方工作时间的实体:

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* WorkingTime
*
* @ORM\Table(name="working_time")
* @ORM\Entity(repositoryClass="AppBundle\Repository\WorkingTimeRepository")
*/
class WorkingTime
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var int
*
* @ORM\Column(name="day", type="smallint")
*/
private $day;

/**
* @var \DateTime
*
* @ORM\Column(name="start", type="time")
*/
private $start;

/**
* @var \DateTime
*
* @ORM\Column(name="end", type="time")
*/
private $end;


/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

/**
* Set day
*
* @param integer $day
*
* @return WorkingTime
*/
public function setDay($day)
{
$this->day = $day;

return $this;
}

/**
* Get day
*
* @return integer
*/
public function getDay()
{
return $this->day;
}

/**
* Set start
*
* @param \DateTime $start
*
* @return WorkingTime
*/
public function setStart($start)
{
$this->start = $start;

return $this;
}

/**
* Get start
*
* @return \DateTime
*/
public function getStart()
{
return $this->start;
}

/**
* Set end
*
* @param \DateTime $end
*
* @return WorkingTime
*/
public function setEnd($end)
{
$this->end = $end;

return $this;
}

/**
* Get end
*
* @return \DateTime
*/
public function getEnd()
{
return $this->end;
}
}

但是当我尝试显示检索它时,时间字段会转换为类似以下内容:

 {
"id": 16,
"day": 2,
"start": "1970-01-01T07:00:00+0000",
"end": "1970-01-01T00:00:00+0000"
},

它有可能被 FOSRestBundle 转换吗?我怎样才能摆脱它并只得到 HH:mm,而不是 1970-01-01T00:00:00+0000?

最佳答案

FOSRestBundle 在渲染对象之前序列化对象。

为此,您需要在内置 Symfony serializer 之间进行选择或JMSSerializer .

由于您现在不手动使用其中之一,并且因为它为这个特定问题提供了解决方案,所以我将给出使用 JMSSerializer 执行此操作的解决方案。
使用时只需遵循 installation chapter文档。

然后,在您的实体中,使用 @Type time 属性上的注释:

use JMS\Serializer\Annotation as JMS;
// ...

/**
* @JMS\Type("DateTime<'H:i'>")
* @ORM\Column(name="start", type="time")
*/
private $start;

/**
* @JMS\Type("DateTime<'H:i'>")
* @ORM\Column(name="end", type="time")
*/
private $end;

现在,您的属性将呈现为 07:00,而不是 1970-01-01T07:00:00+0000

关于Symfony2实体Time类型返回格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35852431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com