sql >> Database teknologi >  >> RDS >> Mysql

Doctrine 2 mysql FIELD funktion i rækkefølge efter

Jeremy Hicks, tak for din udvidelse .Jeg vidste ikke, hvordan jeg skulle forbinde din funktion med doktrin, men endelig finder jeg svar.

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

Jeg har brug for FIELD funktion for at bestille mine enheder, som jeg vælger ved IN udtryk. Men du kan kun bruge denne funktion i SELECT, WHERE, BETWEEN klausul, ikke i ORDER BY .

Løsning:

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

For at undgå at tilføje field alias i din resultatrække skal du sætte HIDDEN søgeord. Så dette er hvordan man kan bestille værdier i IN udtryk i Lære 2.2.



  1. Sådan grupperes efter år i T-SQL

  2. Fejlfinding af SQL Server-replikering

  3. TIMEDIFF() Eksempler – MySQL

  4. Træk minutter fra en tidsværdi i PostgreSQL