使用静默生成器在Doctine中构建查询

时间:2019-03-25 16:44:00

标签: php symfony orm console doctrine

我正在尝试将这种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);

3 个答案:

答案 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');