我试图在Doctrine的查询生成器中创建这个mysql查询,但有问题。这是我的mysql查询
SELECT * FROM invoice i WHERE i.created_at >='2019-03-01 00:00:00';
这是我到目前为止的查询构建器。谁能发现我做错了什么?
$qb = $em->createQueryBuilder('i');
$qb->select('*')
->from('invoice', 'i')
->where('i.create_at >=','2019-03-01 00:00:00');
$query = $this->$qb->getQuery();
$results = $this->$query->getResult();
$output->writeln($this->$results);
我发现了一个小错字。
i.create_at -> i.created_at
Renan是对的 - 在你的声明中没有逗号是必要的。
$qb = $this->createQueryBuilder('i');
$qb->select('i')
->where($qb->expr()->gte('i.create_at',':date'))
->setParameter('date',new \DateTime('2019-03-01
00:00:00'));
$results = $qb->getQuery()->getResult();
$output->writeln($results);
这个如何在存储库中编写它,重点是不需要使用from语句而不是*你应该在这里使用“i”的别名,你应该在where语句中使用expr但是要确保字段created_at是您在实体中拥有的而不是数据库映射(确保在您的实体中它是created_at)
我认为你在 - > where函数中有错误。
正确的是:
->where('i.create_at >= 2019-03-01 00:00:00');