sql >> Database >  >> RDS >> Mysql

Doctrine 2 mysql FIELD-functie in volgorde door

Jeremy Hicks, bedankt voor je extensie .Ik wist niet hoe ik je functie aan de leer moest koppelen, maar eindelijk vind ik het antwoord.

$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');

Ik heb FIELD nodig functie om mijn entiteiten te bestellen die ik selecteer door IN uitdrukking. Maar u kunt deze functie alleen gebruiken in SELECT, WHERE, BETWEEN clausule, niet in ORDER BY .

Oplossing:

$qb
            ->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field")
            ->from("Entities\Round", "r")
            ->where($qb->expr()->in("r.id", $ids))
            ->orderBy("field");

Om te voorkomen dat field wordt toegevoegd alias in uw resultatenrij moet u HIDDEN . plaatsen trefwoord. Dus zo kun je waarden bestellen in IN uitdrukking in Leer 2.2.



  1. SQL Server-vergrendelingen - andere vergrendelingen die u moet kennen

  2. Gegevens invoegen om op te nemen in sqlite

  3. Kan ik ADFS 2.0 gebruiken om bepaalde gebruikers te verifiëren met SQL Server?

  4. Wat is MariaDB? Hoe werkt MariaDB?