代码之家  ›  专栏  ›  技术社区  ›  Martin

如何通过Post访问评论库

  •  0
  • Martin  · 技术社区  · 6 年前

    我有 OneToMany 文章和评论实体之间的关系。

    现在我可以使用 $post->getComments() .

    我想知道如何才能以某种方式订购这些注释,或者添加一些自定义条件,以便只获取特定的注释?

    我在中创建了一个方法 CommentsRepository :

    public function findAllOrdered()
        {
            return $this->createQueryBuilder('c')
                ->orderBy('c.created_at', 'DESC')
                ->getQuery()
                ->getResult()
            ;
        }
    

    是否有可能访问此方法?

    我试着这样访问它: $post->getComments()->findAllOrdered(); 我知道这没有什么意义。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Hyyan Abo Fakher JM1    6 年前

    我想您需要从您的控制器访问它

    use AppBundle\Entity\Comment;
    
    public function listComments()
    {
        $comments = $this->getDoctrine()
            ->getRepository(Comment::class)
            ->findAllOrdered();
    }
    
        2
  •  -1
  •   TsV    6 年前
    class PostRepository extends EntityRepository
    {
    
        private $em;
    
        public function __construct(EntityManagerInterface $em, Mapping\ClassMetadata $class)
        {
            parent::__construct($em, $class);
            $this->em = $em;
        }
    
        /**
         * @param null $sql
         * @param array $params
         * @return array
         * @throws \Exception
         */
        public function findAllPostUserCommentEtcWhatEverYouWant($sql = null, $params = [])
        {
            try {
                return $this->em->getConnection()->executeQuery($sql, $params)->fetchAll();
            } catch (DBALException $e) {
    
            }
            throw new \Exception('');
        }
    
        /**
         * @return array
         */
        public function findThis()
        {
            try {
                return $this->findAllPostUserCommentEtcWhatEverYouWant('select .  ..');
            } catch (\Exception $e) {
            }
        }
    
        /**
         * @return array
         */
        public function findThat()
        {
            try {
                return $this->findAllPostUserCommentEtcWhatEverYouWant('select .  ..');
            } catch (\Exception $e) {
            }
        }
    
    
    
    
        /**
         * @Route("/pdo", name="pdo")
         */
        public function pdo(EntityManagerInterface $em)
        {
            $result = $em->getRepository(Post::class)->findThat();
            $result = $em->getRepository(Post::class)->findThis();