0

データベースからランダムに 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 でクエリを実行すると、常に 3 つの結果行が生成されますが、どういうわけか、Doctrine では結果が 2 つしか得られないことがあります。

ResultSetMapper を正しく使用していない可能性があります。その API がよくわかりません。

4

0 に答える 0