没有为约束Symfony \ Component \ Validator \ Constraints \ Time配置默认选项

时间:2016-08-30 10:03:34

标签: php symfony doctrine-orm doctrine

我正在尝试将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内部服务器   误差)

1 个答案:

答案 0 :(得分:2)

自动添加'你在评论中提到的有时会产生误导,特别是当你刚刚开始学习某些东西时,你会陷入困境。

startTimeendTime的类型为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 
相关问题