我正在尝试将这种mysql查询创建到Doctrine中的查询生成器中,但是有问题。这是我的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);
答案 0 :(得分:0)
我发现了一些错字。
i.create_at -> i.created_at
Renan是正确的-您的where语句中不需要逗号。
答案 1 :(得分:0)
$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)
答案 2 :(得分:-1)
我认为-> where函数存在错误。
正确的是:
->where('i.create_at >= 2019-03-01 00:00:00');