我正在尝试将Time
类型的时间属性设置为Doctrine实体Availability
class Availability{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(name="start_time", type="time", nullable=true)
* @Assert\Time(message = "wrong time format")
*/
private $startTime;
/**
* @ORM\Column(name="end_time", type="time", nullable=true)
* @Assert\Time(message = "wrong time format")
*/
private $endTime;
}
在控制器中,我通过创建Time
对象来设置时间:
use Symfony\Component\Validator\Constraints\Time;
/////
$availability = new Availability();
$availability->setStartTime(new Time('18:00:00'));
$availability->setEndTime(new Time('21:00:00'));
我有错误
没有为约束配置默认选项 Symfony \ Component \ Validator \ Constraints \ Time(500内部服务器 误差)
答案 0 :(得分:2)
自动添加'你在评论中提到的有时会产生误导,特别是当你刚刚开始学习某些东西时,你会陷入困境。
startTime
和endTime
的类型为time
,Doctrine定义时间字段如下:
time:将SQL TIME映射到PHP DateTime对象的类型。
因此,您需要将DateTime
对象传递给您的setter,而不是Time
约束。
这样的事可能适合你:
$availability = new Availability();
$availability->setStartTime(new \DateTime('now'));
$availability->setEndTime(new \DateTime('another date')); // <- change another date