似乎无法将我正在尝试为我正在处理的监视系统执行的 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();
但是,虽然这会返回此站点的一组磁盘,但它们是最旧的,而不是最新的记录。
任何和所有的帮助赞赏!:)
白衣非少年
侃侃尔雅
随时随地看视频慕课网APP