Symfony4如何使用查询生成器获取对象

时间:2019-03-19 15:33:00

标签: symfony doctrine-orm symfony4 query-builder

(嗨!), 我需要从查询生成器中获取对象,但是我收集了一个数组,因此出现以下错误:

  

在数组上调用成员函数getPropertyName()

所以我想我的请求不正确,但是我不知道如何解决问题

public function findByYear($year): array
{
    $conn = $this->getEntityManager()->getConnection();

    $sql = 'SELECT * FROM rent_release r WHERE YEAR(`date`) = :yearRequested';
    $stmt = $conn->prepare($sql);
    $stmt->execute(['yearRequested' => $year]);

    return $stmt->fetchAll();
}

等待您的帮助,谢谢:)

1 个答案:

答案 0 :(得分:0)

好的,根据评论,我使用了createQueryBuilder和beberlei / doctrineextensions。

这是DQL:

$qb = $this->createQueryBuilder('rr')
        ->andWhere('YEAR(rr.date) = :year')
        ->setParameter('year', $year)
        ->orderBy('rr.date', 'ASC')
        ->getQuery();

    return $qb->execute();

在doctrine.yaml中,我添加了以下内容:

dql:
      string_functions:
        YEAR: DoctrineExtensions\Query\Mysql\Year

现在运行良好,谢谢大家!