限制符号的多到许多关系结果2



我有两个实体问题和标签。它们之间有很多与众不同的关系,并且有一个生成的" tag_question"表(带有Quartion_id和tag_id列)。

$questions = $tag->getQuestion();

执行此操作时,它将返回所有结果,所有问题都带有标签。该方法是由doctrine2在标签实体中自动生成的。如何限制结果(添加分页等)?

如果表现对您来说不是一个巨大的问题,那么使用学说来获取对所有问题实体的参考并不是太多问题,让PHP进行过滤(而不是让MySQL这样做)。请记住,默认情况下,学说不会返回完整的实体;相反,它返回一个代理对象(以后可以通过数据库的另一个查询更全面地水合):

class Question
{
    public function getQuestions($offset = 0; $length = null)
    {
        return array_slice( $this->questions, $offset, $length );
    }
}

但是,如果性能是一个问题,您可能需要考虑使用执行自定义DQL查询或Doctrine QueryBuilder类的方法创建自定义存储库类:

class TagRepository
{
    public function findSomeByQuestion($question, $offset, $length)
    {
        $qb = $this->createQueryBuilder("tag")
            ->select("tag")
            ->join("tag.questions", "questions")
            ->where("question.id = :questionId")
            ->setParameter("questionId", $question->getId())
            ->setFirstResult($offset)
            ->setMaxResults($length);
        return $qb->getQuery()->getResult();
    }
}

相关内容

  • 没有找到相关文章