我试图将类型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'组件'验证器'约束'时间(500内部服务器错误)
你在评论中提到的"自动添加"有时会误导你,让你陷入糟糕的境地,尤其是当你刚刚开始学习一些东西的时候。
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