Symfony2实体时间类型返回格式
我有节省地点工作时间的实体:Symfony2实体时间类型返回格式,symfony,doctrine-orm,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 {
<?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;
}
}
它是否可能被FOSRestBundle转换?如何摆脱它,只获取HH:mm,而不是1970-01-01T00:00:00+0000?FOSRestBundle在渲染对象之前序列化对象 要做到这一点,您需要在内置或 由于您目前没有手动使用其中一个,并且因为它提供了此特定问题的解决方案,因此我将给出使用JMSSerializer执行此操作的解决方案。
要使用它,只需遵循文档的说明 然后,在实体中,使用
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;
使用JMS\Serializer\Annotation作为JMS;
// ...
/**
*@JMS\Type(“日期时间”)
*@ORM\Column(name=“start”,type=“time”)
*/
私人$start;
/**
*@JMS\Type(“日期时间”)
*@ORM\Column(name=“end”,type=“time”)
*/
私人$end;
现在,您的属性将呈现为
07:00
,而不是1970-01-01T07:00:00+0000
FYI,您已在StackOverflow上询问了6个答案,并接受了0个答案-请将答案标记为已接受,以便其他用户在将来发现您的问题并希望知道正确的解决方法时受益。感谢您的建议。我会在其他线程中检查它。非常感谢你,伙计!这正是我所需要的。
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;