sql >> Databasteknik >  >> RDS >> Mysql

Doctrine 2 mysql FIELD funktion i ordning efter

Jeremy Hicks, tack för ditt tillägg .Jag visste inte hur jag skulle koppla din funktion till doktrin, men till slut hittar jag svar.

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

Jag behöver FIELD funktion för att beställa mina Entiteter som jag väljer med IN uttryck. Men du kan bara använda den här funktionen i SELECT, WHERE, BETWEEN sats, inte 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");

För att undvika att lägga till field alias i din resultatrad måste du sätta HIDDEN nyckelord. Så här kan man beställa värden i IN uttryck i Doktrin 2.2.



  1. Hur man ändrar servernivåsortering av körande SQL Server-instans

  2. Långsam bulkinsats för bord med många index

  3. Oracle ODP.Net och EF CodeFirst - SaveChanges Error

  4. Hur väljer man mer än 1 post per dag?