我正在尝试获取id表格中的最新消息。因此,我创建了一个静态类,以便能够id从任何所需的表中获取最新的信息。
id
public static function getLatestId($entityManager, $table, $column) { $qb = $entityManager->createQueryBuilder(); $qb->select('t.'.$column)->from($table, 't') ->orderBy('t.'.$column, 'DESC')->setMaxResults(1); $query = $qb->getQuery(); $result = $query->getSingleResult(); $latestId = $result[$column]; return $latestId; }
当我调用函数withgetLatestId($em, 'company', 'companyId')并检查查询(with)时getQuery(),它会创建奇怪的语句:
getLatestId($em, 'company', 'companyId')
getQuery()
SELECT c0_.companyId AS companyId0 FROM company c0_ ORDER BY c0_.companyId DESC LIMIT 1
为什么它用t.by替换c0_.并0在列后缀a ?
t.
c0_.
0
首先,您要获取部分,默认情况下将返回标量变量。因此,为清楚起见,最好使用getSingleScalarResult()方法。另请参阅:http : //docs.doctrine- project.org/en/latest/reference/partial-objects.html
然后,您尝试读取userId列,但您传递了companyId列。因此,请替换为:
$latestId = $result['userId'];
有了这个:
$latestId = $result[$column];
不必担心Doctrine为您的列赋予的别名。这是正常的行为,它有助于教义在内部以正确的方式映射所有内容。