Yii findByAttributes() mit mehr als Attribut.
Ich habe mit Yii für eine Weile jetzt, und wenn ich ziehen will Daten aus einer Datenbank, die ich in der Regel nur mit einem findByAttributes.
$model=Auction::model()->findAllByAttributes(array('status'=>'1'));
Oder etwas entlang jenen Linien.
Meine Frage wäre, wie würde ich mit einem größer-als-Typ-situation? Ich habe versucht,
$model=Auction::model()->findAllByAttributes(array('starttime'>=$date));
wo Datum zugeordnet ist, eine aktuelle Datum/Zeit-setup-jedoch dieses führt zu einem Fehler. Also meine Frage ist muss ich die Nutzungsbedingungen und oder params? Soll ich tun, diese Art der Sache in der Modell oder mithilfe der Kriterien oder CActiveDataProvider Zeug?
Ich würde schätzen, jemand verweist mich in die richtige Richtung. Ich habe immer nur bekommen, indem Sie mit findAll()s, aber ich weiß, Ihr ist ein besserer Weg, dies zu tun. Einige Allgemeine Informationen, was und Wann verwendet man Attribute, Bedingungen, Parameter, etc wären auch schön.
Ich habe gelesen das Yii-Dokumentation gesucht und Unmengen von Websites, die für die Antworten auf diese Fragen und Im es nicht zu finden.
InformationsquelleAutor KyleVan | 2011-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es eine gute Idee, params sogar mit findByAttributes, aber das nur tut, passende. Sie können findAll und fügen Sie eine Bedingung-Anweisung, und das format wäre sehr ähnlich zu dem, was Sie bereits tun:
Wenn Sie Taten, eine sehr komplexe Abfrage oder ein Gebäude programmgesteuert eine Abfrage, die Sie möglicherweise verwenden möchten findAllBySql oder CDbConnection::createCommand oder Abfrage-Generator, es hängt nur davon ab, was macht am meisten Sinn für Ihre app.
Ich würde (wieder -) Lesen der Yii-Abschnitt auf Arbeiten mit Datenbanken, während es nicht haben, umfangreiche Beispiele, es ist ziemlich klar. Dann können Sie versuchen, die Yii Blog-tutorial, Larry Ullman ' s tutorials, etc.
datetime
Gleichheit überprüft, sind selten eine gute Idee (aus dem gleichen Grund ist es schlecht für diefloat
), viel besser ist, um Ungleichheiten (... >= ... UND ... <= ...), wie @ldg Hinweise auf.Die
params
"gute Idee" ist für Geschwindigkeit und Sicherheit (mildSQL
Injektion Widerstand).Okay, das macht Sinn. War ein bisschen verloren, aber ich habe es jetzt bekommen.
InformationsquelleAutor ldg
Den Typ des 2. Parameters der
findAllByAttributes
ist gemischt, so haben wir (nicht aber unendlich) viele Möglichkeiten, zum Beispiel:oder
InformationsquelleAutor Radu Dumbrăveanu