Sub-queries ActiveRecord-Yii
Ist es möglich, die sub-queries in ActiveRecord in Yii?
ich habe eine Abfrage wie diese:
select * from table1
where table1.field1 in (select table2.field2 from table2)
ich bin derzeit mit der Stilllegung-code:
object1::model()->findAll(array('condition'=>'t.field1 in (select table2.field2 from table2)'))
[Bearbeiten]
ich würde gerne wissen, ob es eine Weise zu konstruieren, die sub-Abfrage ohne SQL und ohne Verwendung von joins.
Gibt es eine Lösung ?
und vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst die Suche nach Dubletten durch die db-Felder:
Holen Sie sich die Unterabfrage:
Fügen Sie die Unterabfrage Zustand:
Wie zu verwenden:
Oder:
Quelle: http://www.yiiframework.com/wiki/364/using-sub-query-for-doubletts/
Nein, es ist nicht ein Weg, um programmgesteuert zu konstruieren, die eine Unterabfrage mit Yii ' s CDbCriteria und CActiveRecord. Es sieht nicht wie der Abfrage-Generator hat einen Weg, entweder.
Können Sie immer noch Unterabfragen ein paar verschiedene Möglichkeiten, jedoch:
Können Sie auch verknüpfen (was wahrscheinlich schneller, sub-queries kann langsam sein):
Können Sie auch eine direkte SQL-Abfrage mit findAllBySql:
Können Sie jedoch zumindest einen netten AR-Stil-Schnittstelle, um diese wie so:
Genannt, etwa so:
Eine interessante alternative Idee wäre es, erstellen Sie Ihre subquery mit der Abfrage-generator ist CDbCommand oder so, und dann übergeben Sie das resultierende SQL-query-string in ein CDbCritera
addInCondition()
? Nicht sicher, ob dies funktionieren wird, aber es könnte:Kann man immer erweitern die Basis CDbCriteria-Klasse zum verarbeiten und erstellen von Unterabfragen irgendwie auch. Könnte eine schöne Erweiterung, die Sie abgeben könnten! 🙂
Ich hoffe, das hilft!
Ich weiß, das ein Alter thread aber vielleicht hat jemand (wie ich) braucht noch eine Antwort.
Gibt es eine kleine Fragen im Zusammenhang mit den vorherigen Antworten. So, hier ist meine Verbesserung: