Php 如何有效地将数据从我的控制器传递到存储库Symfony
我正在做一个Symfony项目,它利用了 我在其中声明并创建了查询生成器实例的存储库文件 (报告1) 在上述日期之间自动为我的页面生成数据 现在我想创建一个表单,在其中我可以在两个日期之间进行搜索 目的是将此表单中发布的数据传递给我的控制器,并将其传递到我下面的方法中 下面是我的控制器(控制器1) 请问如何编辑我必须将控制器内的数据发布到我的(repository1)中的内容 那就是Php 如何有效地将数据从我的控制器传递到存储库Symfony,php,symfony,Php,Symfony,我正在做一个Symfony项目,它利用了 我在其中声明并创建了查询生成器实例的存储库文件 (报告1) 在上述日期之间自动为我的页面生成数据 现在我想创建一个表单,在其中我可以在两个日期之间进行搜索 目的是将此表单中发布的数据传递给我的控制器,并将其传递到我下面的方法中 下面是我的控制器(控制器1) 请问如何编辑我必须将控制器内的数据发布到我的(repository1)中的内容 那就是 $mk = $this->createQueryBuilder('up');
$mk = $this->createQueryBuilder('up');
$later = $date1;
$today = $date2;
$mk->andWhere('up.period BETWEEN :start AND :end');
$mk->setParameter('start', $later);
$mk->setParameter('end', $today);
return $mk->getQuery()->getResult();
这是可能的,还是我想得太多了?RepositoryClass
public function getByStartEndDate(DateTimeInterface $start, DateTimeInterface $end)
{
return $this->createQueryBuilder('up')
->andWhere('up.period BETWEEN :start AND :end')
->setParameter('start', $start)
->setParameter('end', $end)
->getQuery()
->getResult()
;
}
控制器类
private function getData(Request $request, RepositoryClass $repo)
{
// May need to convert these to DateTime objects
$start = $request->get('start');
$end = $request->get('end');
$records = $repo->getByStartEndDate($start, $end);
// do what you want with the records here
}
可以将日期作为参数提供给方法 控制器类:
protected function getData(EntityManagerInterface $entityManager,Request $request) {
$start = $request->get('start') ? new \DateTime($request->get('start')) : null;
$end = $request->get('end') ? new \DateTime($request->get('end')) : null;
$result = $entityManager->getRepository(Entity::class)->getName($start, $end);
// do with result as desired
}
存储库类:
public function getName(\DateTimeInterface $start, \DateTimeInterface $end)
{
return $this->createQueryBuilder('up')
->andWhere('up.period BETWEEN :start AND :end')
->setParameter('start', $start)
->setParameter('end', $end)
->getQuery()
->getResult()
;
}
对于您的问题,将它们作为参数添加到
repository1::getName($date1=null,$date2=null)
然后添加参数为null
时的条件以设置默认值。但是,我强烈建议使用。然后,您可以将依赖项注入与调用一起使用($date1,$date2)从查询生成器中检索所需的数据。您试图解决什么问题,具体是什么问题?您是否需要检查该请求是post请求还是使用单独的路由?如果您使用Symfony,我相信向方法添加参数对您来说是件小事。欢迎使用->get('start')
和$start
和$end
不是DateTimeInterface实例。是的,我在控制器类中的内联注释中提到了这一点是的,但您在->get('start')
:-)中仍然有一个输入错误。您是否意识到您的开始和结束分配中有一个输入错误?我猜你在这两个方面都是人类:)
protected function getData(EntityManagerInterface $entityManager,Request $request) {
$start = $request->get('start') ? new \DateTime($request->get('start')) : null;
$end = $request->get('end') ? new \DateTime($request->get('end')) : null;
$result = $entityManager->getRepository(Entity::class)->getName($start, $end);
// do with result as desired
}
public function getName(\DateTimeInterface $start, \DateTimeInterface $end)
{
return $this->createQueryBuilder('up')
->andWhere('up.period BETWEEN :start AND :end')
->setParameter('start', $start)
->setParameter('end', $end)
->getQuery()
->getResult()
;
}