Luk*_*zas 4 symfony doctrine-orm
我有保存地方工作时间的实体:
<?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;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试显示检索它时,时间字段将转换为:
{
"id": 16,
"day": 2,
"start": "1970-01-01T07:00:00+0000",
"end": "1970-01-01T00:00:00+0000"
},
Run Code Online (Sandbox Code Playgroud)
它是否有可能被FOSRestBundle转换?如何摆脱它并获得仅HH:mm,而不是1970-01-01T00:00:00 + 0000?
FOSRestBundle在渲染之前将对象序列化.
为此,您需要在内置Symfony序列化程序或JMSSerializer之间进行选择.
由于您暂时不手动使用其中一个,并且因为它为此特定问题提供了解决方案,因此我将使用JMSSerializer提供解决方案.
要使用它,您只需要按照文档的安装章节进行操作.
然后,在您的实体中,在属性上使用@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;
Run Code Online (Sandbox Code Playgroud)
现在,您的属性将呈现为07:00而不是1970-01-01T07:00:00+0000.
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |