zend-blog-3-backend
96 строк · 2.0 Кб
1<?php
2
3namespace App\Repository;
4
5use App\Entity\MediaFile;
6use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
7use Doctrine\ORM\Query;
8use Doctrine\Persistence\ManagerRegistry;
9
10/**
11* MediaFileRepository
12*
13* @method MediaFile|null find($id, $lockMode = null, $lockVersion = null)
14*/
15class MediaFileRepository extends ServiceEntityRepository
16{
17/**
18* @param ManagerRegistry $registry
19*/
20public function __construct(ManagerRegistry $registry)
21{
22parent::__construct($registry, MediaFile::class);
23}
24
25/**
26* @return Query
27*/
28public function getListQuery(): Query
29{
30$qb = $this->createQueryBuilder('e');
31$qb
32->select('e', 'p', 't')
33->leftJoin('e.post', 'p')
34->leftJoin('p.tags', 't')
35->orderBy('e.id', 'DESC')
36;
37
38return $qb->getQuery();
39}
40
41/**
42* @param int $postId
43*
44* @return MediaFile[]
45*/
46public function getFilesByPost($postId)
47{
48$qb = $this->createQueryBuilder('m');
49
50$qb
51->where($qb->expr()->eq('m.post', ':postId'))
52->setParameter('postId', $postId)
53->orderBy('m.id')
54;
55
56return $qb->getQuery()->getResult();
57}
58
59/**
60* @param int $postId
61*
62* @return int
63*/
64public function getCountByPostId($postId)
65{
66$qb = $this->createQueryBuilder('m');
67
68$qb
69->select('COUNT(m.id)')
70->where($qb->expr()->eq('m.post', ':postId'))
71->setParameter('postId', $postId)
72;
73
74return (int)$qb->getQuery()->getSingleScalarResult();
75}
76
77/**
78* @return MediaFile[]
79*/
80public function getNotBackedUp()
81{
82$qb = $this->createQueryBuilder('m');
83
84$qb
85->where(
86$qb->expr()->eq(
87'm.backedUp',
88$qb->expr()->literal(false)
89)
90)
91->setMaxResults(30)
92;
93
94return $qb->getQuery()->getResult();
95}
96}
97