Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 2+;原则2:使用日期时间值基于日期字段查找记录_Symfony_Doctrine Orm - Fatal编程技术网

Symfony 2+;原则2:使用日期时间值基于日期字段查找记录

Symfony 2+;原则2:使用日期时间值基于日期字段查找记录,symfony,doctrine-orm,Symfony,Doctrine Orm,我有一个名为Event的实体,其中有一个字段startDate(type=“date”),另一个名为slug(type=“string”)。我创建了一个控制器操作,以基于这些部分获取特定事件。路由器以“Y-m-d”格式传递eventDate,并传递eventSlug。现在,我已经成功地创建了一个DateTime对象,使用$startDate=DateTime::createFromFormat('Y-m-d',$eventDate)。现在如果我发布 $event = $eventRepo->

我有一个名为
Event
的实体,其中有一个字段
startDate
(type=“date”),另一个名为
slug
(type=“string”)。我创建了一个控制器操作,以基于这些部分获取特定事件。路由器以“Y-m-d”格式传递eventDate,并传递eventSlug。现在,我已经成功地创建了一个DateTime对象,使用
$startDate=DateTime::createFromFormat('Y-m-d',$eventDate)
。现在如果我发布

$event = $eventRepo->findOneBy(array(
    'startDate' => $startDate,
    'slug'      => $eventSlug,
));

它什么也得不到(
$event
为空)。我是否遗漏了条令文档中的某些内容,或者我是否发现了错误?

首先确保实际存在具有给定slug和开始日期的
事件。
slug
字段是否唯一

无论如何,您可以让Doctrine为您进行参数转换,而无需使用PHP
format
函数:

$repo = $this->getDoctrine()->getRepository('AcmeHelloBundle:Event');
$qb   = $repo->createQueryBuilder('e');

$event = $qb
    ->andwhere($qb->expr()->eq('e.slug', ':slug'))
    ->andWhere($qb->expr()->eq('e.start_date', ':start_date'))
    ->setParameter('slug', $eventSlug)
    ->setParameter('start_date', $startDate)
    ->getQuery()
        ->getOneOrNullResult();
或者,使用原则参数转换器:

/**
 * @Route("/event/show/{slug}/{start_date}")
 * @Method("GET")
 * @ParamConverter("event", class="AcmeHelloBundle:Event")
 * @Template
 */
public function showAction(Event Event)
{
}

在内部,Doctrine param converter为您执行此操作:它检查请求中的任何参数,并使用
slug
start_date
查找实体

如果我离开startDate部分,只使用slug,它就像魅力一样工作,所以问题肯定出在startDate部分。