CakePHP-Model mit "Zwischen den Terminen"
Ich habe eine große Datenmenge (über eine Milliarde Zeilen). Die Daten partitioniert werden in der Datenbank nach Datum. Als solche, mein query tool MUSS geben Sie eine SQL-zwischen-Klausel auf jede Abfrage, oder es wird zu Scannen jeder partition.. und naja, werde es timeout, bevor es überhaupt wieder kommt.
Also.. meine Frage ist, ist das Feld in der Datenbank, das ist partitioniert ist ein Datum..
Mit CakePHP, wie kann ich angeben "zwischen" Daten in meinem Formular?
Ich dachte zu tun "start_date" und "end_date" in der form selbst, aber das kann auch bringen Sie mir zwei noch eine zweite Frage.. wie kann ich überprüfen, dass in einem Modell, das mit einer Tabelle verknüpft?
InformationsquelleAutor | 2009-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich dich richtig:
Da Sie überprüfen möchten diese Termine werden Sie schwerer zu greifen, wenn Sie versteckt im inneren Ihre Bedingungen-array. Ich schlage vor, Sie versuchen, übergeben Sie diese in separat-und dann den Umgang mit Ihnen später:
Sollten Sie hoffentlich in der Lage sein zu handhaben, alles andere im
beforeFind
filter:Ich habe nicht versucht, mit
Model::invalidate()
während einer Suche-Funktion, das könnte also auch nicht funktionieren. Die Idee ist, dass, wenn die form erstellt wird, mithilfe vonFormHelper
sollten diese Meldungen machen es wieder neben den Eingabefeldern.Gelingt das nicht, müssen Sie möglicherweise führen Sie diese überprüfung in den controller zu
Session::setFlash()
. wenn so, Sie können auch loszuwerden, diebeforeFind
und legte dieBETWEEN
Zustand-array mit anderen Bedingungen.InformationsquelleAutor deizel
wenn Sie wollen, finden die letzten 20 Tage .
anderen Weise zwischen zwei Datumsangaben
InformationsquelleAutor Tarun Gupta
Könnten Sie schreiben eine benutzerdefinierte Methode in Ihrem Modell zu suchen, die zwischen dem Datum:
Soweit zu validieren, könnte man das Modell verwenden, ist
beforeValidate()
Rückruf der Validierung der beiden Termine. Mehr info auf dieser hier.Nicht, dass die Antwort auf Ihre Frage?
InformationsquelleAutor inkedmn