Wenn ich in DBIx :: Class eine Abfrage mit dieser Syntax erzeuge:
...
"Time(submitted_at)" => { ">" => "Time(Now()-Interval " . $wait_period . " minute)" }
...
Die generierte Abfrage ist perfekt, außer dass die Funktion auf der rechten Seite in Anführungszeichen steht.
... AND ( Time(submitted_at) > "Time(Now()-Interval 5 minute)" ) ...
Wenn es nicht zitiert wurde, wäre es korrekt. Wie würde ich das tun?
Vielen Dank, rauben
Antworten:
4 für die Antwort № 1Übergeben Sie die Zeichenfolge stattdessen als Skalarreferenz:
...
"Time(submitted_at)" => "> Time(Now()-Interval $wait_period minute)"
...
5 für die Antwort № 2
Es scheint Die Art, wie Ausdrücke ausgeführt werden, besteht darin, einen Skalarref oder ein Array Ref zu übergeben, wenn Sie Literal-SQL verwenden möchten.
Hier ist ein Beispiel, das die Verwendung eines Abfrageparameters für die $wait_period
Variable in den Ausdruck:
...
"Time(submitted_at)" => { ">" => ["Time(Now()-Interval ? Minute)", $wait_period] }
...