Frage

Ich benutze Doctrine, ein Php ORM. Ich habe eine Lehre -Abfrage erstellt und brauche mehr Kontrolle. Also habe ich angefangen, das zu benutzen ->andWhere(...) Methoden zum Hinzufügen neuer wo Klauseln. Ich muss jedoch eine Unterabfrage basierend auf einer anderen Tabelle wie SO durchführen:

$query->andWhere("id in (SELECT id from other_table where value = ?)", $myvar);

Das obige funktioniert nicht. Es gibt jedoch keine Doktrinklasse für andere_table, und die Doktrin versucht immer wieder, die Datei zu laden other_file.php. Ich habe herausgefunden, dass es dies als DQL interpretiert (richtig?). Gibt es eine andere Weise, dass ich die Lehre sagen kann, dass sie dies nicht als DQL interpretieren soll, damit ich nur RAW SQL verwenden kann?

Ich weiß, ich könnte gebrauchen Doctrine_RawSql, Aber das würde das Umschreiben all dieser Abfrage beinhalten. Es wäre schön, wenn es ein halbes Haus gäbe.

War es hilfreich?

Lösung

Leider mit Doktrin 1.x ist es nicht möglich, dies auch mit RAWSQL zu tun.

Alle RAWSQL -Abfragen erfordern, dass jede ausgewählte Tabelle einer 'Komponente' zugeordnet wird, was wirklich eine Klasse doctrine_record ist.

Möglicherweise werden Sie besser serviert, um eine Klasse für diesen anderen Tisch hinzuzufügen, auch wenn er dumm einfach ist und nirgendwo anders verwendet wird.

Andernfalls müssen Sie mit: RAW -PDO ausfallen:

$dbh = Doctrine_Manager::connection()->getDbh();

Sehen Doctrine_rawsql

Andere Tipps

Auch wenn man so etwas tun kann (dh DB-Tabellen, die nicht einer Doktrinklasse zugeordnet sind und mit reinem Rauen-SQL nicht zugeordnet sind), Ich denke nicht, dass es mit Doctrine 1.x möglich ist

Vielleicht mit Doctrine 2.0 - was für das Ende dieses Jahres angekündigt wird ... was nicht bald ^^ ist

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top