Die im Anschluss an die eine Zufallsaufzeichnung mit Lehre zurückkehren würde:Erhalten Sie einen zufälligen Datensatz aus der Datenbank/Einheit mit CI2 + Doctrine2
$name = Doctrine::getTable('nametable')
->createQuery()
->select('name')
->orderBy('RAND()')
->fetchOne();
Aber ich bin mit CI2 + Doctrine2, und so funktioniert es nicht Call to undefined method Doctrine::getTable()
ich habe
versucht$data = $this->doctrine->em->getRepository('ORM\Project\Names')
->orderBy('RAND()')
->fetchOne();
Aber das funktioniert auch nicht: Uncaught exception 'BadMethodCallException' with message 'Undefined method 'orderBy'. The method name must start with either findBy or findOneBy!'
Vielleicht findOneBy ist was ich will, aber es erwartet ein Array.
Gibt es eine elegante Möglichkeit, einen zufälligen Datensatz in diesem Setup abzurufen?
Edit:
Dies ist, was ich habe kommen mit:
$query = $this->doctrine->em->createQuery("select max(u.id) from ORM\Dynasties2\Femalenames u");
$result = $query->getSingleResult();
$highval = $result[1];
$random_name = rand(1,$highval);
$name = $this->doctrine->em->find('ORM\Dynasties2\Femalenames', $random_name);
$mother_name = $name->getName();
Sicherlich gibt es einen sauberen Weg ??? Anscheinend gibt es in CI2/Doctrine2 keine RAND(), nur um eine SQL-Abfrage zu schreiben.
Ja, das ist die Doktrin Art, damit umzugehen. Sie können auch eine Funktion wie folgt verwenden: https://gist.github.com/Thinkscape/124d658e4076421c0516 –