GET random Object mit Doctrine

Doctrine selbst hat keine ORDER BY rand() Funktion implementiert. Aber es gibt eine Lösung. Man lässt sich den total count der rows ausgeben und nutzt die PHP interne rand() Funktion um FirstResult zu definieren.

    /**
     * @return mixed
     */
    public function getTotal()
    {
        return $this->getEntityManager()->createQueryBuilder()
            ->select('COUNT(p.id)')
            ->from('AppBundle:Product', 'p')
            ->getQuery()
            ->getSingleScalarResult();
    }

    /**
     * @return mixed
     */
    public function getRandom()
    {
        return $this->getEntityManager()->createQueryBuilder()
            ->select('p')
            ->from('AppBundle:Product', 'p')
            ->setFirstResult(rand(0, $this->getTotal()-1))
            ->setMaxResults(1)
            ->getQuery()
            ->getSingleResult();
    }

:nth-of-type Pseudo-Klasse macht Tabellen-Zeilen Highlighting einfach

Das abwechselnd farbliche Absetzen von Tabellenzeilen in HTML kann auch mittels einer CSS 3 Pseudo Klasse umgesetzt werden.

/* heighlight jeder 2ten zeile beginnend mit der ersten */
tr:nth-of-type(2n+1) { background-color:#f7f7f7; }

/* heighlight jeder 2ten zeile beginnend mit der zweiten */
tr:nth-of-type(2n) { background-color:#f7f7f7; }

Der InternetExplorer weigert sich leider bis dato diese CSS 3 Angaben zu interpretieren.

Mehr Informationen zu CSS 3 Selektoren liefert der W3C