sql >> Databáze >  >> RDS >> Mysql

Doctrine 2 mysql FIELD funkce v pořadí podle

Jeremy Hicks, děkujeme za vaše rozšíření .Nevěděl jsem, jak propojit vaši funkci s doktrínou, ale nakonec jsem našel odpověď.

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

Potřebuji FIELD funkci objednat mé Entity, které vyberu pomocí IN výraz. Tuto funkci však můžete použít pouze v SELECT, WHERE, BETWEEN klauzule, nikoli v ORDER BY .

Řešení:

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

Chcete-li se vyhnout přidání field alias do řádku výsledků musíte zadat HIDDEN klíčové slovo. Takže takto je možné seřadit hodnoty v IN výraz v Nauce 2.2.



  1. Jak získat dotaz na atributy sloupců z názvu tabulky pomocí PostgreSQL?

  2. Analýza protokolů PostgreSQL s pgBadger

  3. Vytváření částečného jedinečného indexu pomocí sqlalchemy na Postgres

  4. SQL DELETE pro začátečníky