如何在Symfony 3学说中查找所有位置查询


How to find all where query in Symfony 3 Doctrine

我有一个名为post的表和名为status的列string,数据为publishedpending。现在,我想使用EntityRepository类自定义方法从该表中获取所有行,或者只修改现有方法。

我试过这个:

public function queryLatestPublished()
{
  return $this->getEntityManager()
        ->createQuery('
            SELECT p
            FROM AppBundle:Post
            WHERE p.staus == :st
            ORDER BY p.created DESC
        ')
        ->setParameter('now', new 'DateTime())
        ->setParameter('st', 'published')
    ;
}

但是查询不返回任何内容。

您的代码中存在一些错误/问题

  • 提供的参数数量与预期的数量不匹配
  • 您不调用getResult(或任何其他类似execute的方法),因此实际上返回Query对象
  • 我会更改方法的命名,因为它具有误导性

我也要换

  • 你可能想以某种方式限制结果的数量
  • 如果您在实体存储库中(在本例中为Post),则可以省略在使用querybuilder时使用selectfrom

我的主张:

/**
 * @param int $limit
 * @param int $offset
 *
 * @return Post[]
 */
public function findNewestPublished($limit = 10, $offset = 0)
{
    return $this->createQueryBuilder('p')
        ->where('p.status = :status')
        ->setParameter('status', 'published')
        ->addOrderBy('p.createdAt', 'desc')
        ->getQuery()
        ->setFirstResult($offset)
        ->setMaxResults($limit)
        ->getResult();
}

我希望这能帮助

尝试这个

 $em = $this->getDoctrine()->getManager();
 $sql = "SELECT p FROM AppBundle:Post WHERE p.staus = ?1 ORDER BY p.created DESC'";
 $query = $em->createQuery($sql);
 $query->setParameter(1, 'published');
 $result = $query->getResult();

有关详细信息,请参阅http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#dql-选择示例