使用安静的构建器在Doctrine中构建查询

问题描述 投票:-1回答:3

我试图在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);
php symfony orm console doctrine
3个回答
0
投票

我发现了一个小错字。

i.create_at -> i.created_at

Renan是对的 - 在你的声明中没有逗号是必要的。


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)


-1
投票

我认为你在 - > where函数中有错误。

正确的是:

->where('i.create_at >= 2019-03-01 00:00:00');
© www.soinside.com 2019 - 2024. All rights reserved.