Как взять пользователей, которые заходили в другие дни?

Для того, чтобы взять пользователей, которые заходили в другие дни, можно воспользоваться следующим подходом в рамках Symfony.

Первым шагом будет создание модели, представляющей пользователя в вашем приложении. Вы можете создать класс User, который будет наследоваться от базового класса UserInterface. В этом классе вы должны определить свойства пользователя, такие как имя, электронная почта, дата последней активности и т. д. Также, вы можете включить в модель необходимые методы, такие как метод lastActiveDateTime(), который возвращает дату последнего входа пользователя.

use SymfonyComponentSecurityCoreUserUserInterface;

class User implements UserInterface
{
    // Свойства пользователя
    private $id;
    private $email;
    private $lastActive;

    // Конструктор и геттеры/сеттеры

    public function lastActiveDateTime(): DateTimeInterface
    {
        return new DateTimeImmutable($this->getLastActive());
    }

    // Реализация методов UserInterface
    // ...
}

Затем, вам потребуется сервис (например, UserRepository), который будет отвечать за взаимодействие с базой данных и поиск пользователей по различным критериям. В рамках этого сервиса вы можете написать метод findUsersWithDifferentDaysActive($days), который будет возвращать всех пользователей, у которых время последней активности отличается от текущей даты более, чем на указанное число дней.

use DoctrineORMEntityManagerInterface;

class UserRepository
{
    private $entityManager;

    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->entityManager = $entityManager;
    }

    public function findUsersWithDifferentDaysActive($days): array
    {
        $queryBuilder = $this->entityManager->createQueryBuilder();
        $queryBuilder
            ->select('u')
            ->from('User', 'u')
            ->where('DATEDIFF(CURRENT_DATE(), u.lastActive) > :days')
            ->setParameter('days', $days);

        return $queryBuilder->getQuery()->getResult();
    }
}

Для работы с базой данных в Symfony обычно используется Doctrine ORM. В приведенном выше примере мы определили метод findUsersWithDifferentDaysActive(), в котором мы создаем и вызываем QueryBuilder для построения запроса. В данном примере мы ищем всех пользователей, у которых разница между текущей датой и датой последней активности больше, чем указанное количество дней.

Когда пользователи будут найдены, вы можете использовать результаты в контроллере Symfony для дальнейшей обработки или отображения.

Например:

use AppRepositoryUserRepository;

class UserController extends AbstractController
{
    private $userRepository;

    public function __construct(UserRepository $userRepository)
    {
        $this->userRepository = $userRepository;
    }

    public function usersWithDifferentDaysActive($days)
    {
        $users = $this->userRepository->findUsersWithDifferentDaysActive($days);
        
        // Обработка пользователей
        // ...
        
        return $this->render('users/index.html.twig', ['users' => $users]);
    }
}

В данном примере мы использовали контроллер Symfony, который принимает UserRepository через конструктор. Метод usersWithDifferentDaysActive() вызывает метод findUsersWithDifferentDaysActive() из репозитория, получает результаты и передает их в шаблон Twig для отображения.

Это лишь пример того, как можно реализовать задачу. В реальном приложении вам может потребоваться дополнительная настройка, такая как обработка ошибок или применение дополнительных фильтров для поиска пользователей.