Newer
Older
activity-manager / src / Repository / ActivityRepository.php
<?php
namespace App\Repository;

use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query;
use Doctrine\ORM\Query\Expr\Join;
use App\Entity\ActorEntity;
use App\Enum\StatusEnum;

/**
 * Repository for workspaces
 */
class ActivityRepository extends EntityRepository
{

    /**
     * Find active activities of followed actors
     *
     * @return array
     */
    public function findActiveFollowed(): array
    {
        $query = $this->createQueryBuilder('activity');
        $query->join(ActorEntity::class, 'actor', Join::WITH, 'activity.actor = actor');
        $query->andWhere($query->expr()
            ->eq('actor.followed', true));
        $query->andWhere($query->expr()->in('activity.status', StatusEnum::ACTIVE_STATUS));

        return $query->getQuery()->execute([], Query::HYDRATE_OBJECT);
    }
}