Не могу обернуть голову вокруг Doctrine запроса, который я пытаюсь выполнить для системы мониторинга, над которой я работаю. Моя базовая база данных - SQLite.
Моя таблица довольно проста:
CREATE TABLE disk_space_usage (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
disk_name VARCHAR(255) NOT NULL,
size INTEGER NOT NULL,
free INTEGER NOT NULL,
d_profile DATETIME NOT NULL --(DC2Type:datetime_immutable),
site_id INTEGER NOT NULL
)
Каждый раз, когда выполняется импорт из системы сбора данных, у нас будет несколько новых записей, созданных для каждого "site_id". Каждая группа записей для «site_id» будет иметь одно и то же значение «d_profile».
Я хочу запросить Doctrine, чтобы получить последний набор записей, доступных для данного «site_id».
Например, скажем, «site_id» 12345 имеет 5 дисков: «d1», «d2», «d3», «d4» и «d5», и что этот импорт выполнялся в течение 100 дней подряд. Там будет 500 записей, связанных с "site_id" 12345. Я хотел бы получить последние 5.
Однако количество дисков будет варьироваться от сайта к сайту и может отличаться для любого данного сайта, так как диски введен в эксплуатацию и выведен из эксплуатации. Кроме того, нет гарантии, что импорт будет выполняться каждый день, поэтому мне нужно получить самый последний набор записей для этого сайта, независимо от даты и независимо от количества дисков.
Мой запрос в настоящее время выглядит как это:
return $this->createQueryBuilder('dsu')
->select()
->distinct()
->where('dsu.site = :customer')
->groupBy('dsu.diskName')
->orderBy('dsu.dProfile', 'DESC')
->setParameter('customer', $customerSite)
->getQuery()
->getResult();
Однако, хотя это возвращает один набор дисков для этого сайта, они являются самыми старыми, а не самыми последними записями.
Любая и вся помощь приветствуется! :)
М