Ich möchte Datensätze auswählen, die 1 Monat alt oder neuer sind.So verwenden Sie MySQL-Funktionen in Propel
Die Abfrage wird: SELECT * FROM foobar WHERE created_at> DATE_SUB (CURDATE(), interval 1 Monat)
Mit Propel in Symfony, ich mache:
$ c = new Criteria
$ c-> hinzufügen (FoobarPeer :: CREATED_AT, "DATE_SUB (curdate(), INTERVALL 1 Monat)", Kriterien :: GREATER_THAN);
Was Propel erzeugt ist: SELECT * FROM foobar WHERE created_at> 'DATE_SUB (CURDATE(), interval 1 Monat)' - mit anderen Worten, es die MySQL-Funktion in einfache Anführungszeichen setzt, die es macht ein (sinnlos) string und ich bekomme keine Aufzeichnungen.
Was ich jetzt getan ist:
$ c-> add (FoobarPeer :: CREATED_AT "created_at> DATE_SUB (CURDATE(), interval 1 Monat)", Kriterien :: CUSTOM) ;
Aber ich möchte keine benutzerdefinierten Problemumgehungen verwenden, es sei denn, ich muss. Irgendwelche Hinweise neben der Verwendung von Kriterien :: CUSTOM?
Da sich Propel stark entwickelt hat, seit diese Frage beantwortet wurde, hier einige Überlegungen (geschrieben vom Propel-Projektleiter), in denen angegeben wird, ob ORM oder Raw SQL relevant ist: http: //propelposterous. com/how-can-ich-write-this-query-using-ein-orm –