我需要从数据库中随机选择 3 个元素,所以我尝试使用此查询:
$em = $this->getEntityManager('MyBundle:Gift');
$rsm = new ResultSetMapping();
$rsm->addEntityResult('MyBundle:Gift', 'g1');
$rsm->addFieldResult('g1', 'id', 'id');
$rsm->addFieldResult('g1', 'image', 'image');
$rsm->addFieldResult('g1', 'special', 'special');
$rsm->addFieldResult('g1', 'activationDate', 'activationDate');
// Compute carthesian product to generate all possible combinations
$result = $em->createNativeQuery(
"SELECT * FROM gift g1, gift g2, gift g3 ORDER BY RAND() LIMIT 3", $rsm
)->getResult();
在 MySQL 上运行查询总是产生三个结果行,但不知何故,Doctrine 有时只得到 2 个结果。
也许我没有正确使用 ResultSetMapper,我不太了解它的 API。