2016-05-08 2 views
0

Ich habe einen Code zum Generieren einer SQL-Abfrage aus einer Tabelle. Ich möchte Elemente auswählen, die zwischen Daten und einem wahren Wert in einem anderen Feld vorhanden sind.Wählen Sie mit erweiterten Where-Klauseln und Zeitstempel mit Carbon und DB

DB Verwendung im Bauwesen und Carbon-Fassaden, folgende Ratschläge, wie mit Kohlenstoff in Laravel 5.

zu arbeiten, aber ich habe nicht die Wirkung ich alle Zeilen zurückgibt

private function runBids() { 
     $dt = Carbon::parse(Config::get('constants.start_lot')); 
     $start = $dt->toDateTimeString(); // 2006-05-08 08:34:59 
     $end = $dt->addDay()->startOfDay(); // 2006-05-09 00:00:00 

     $lots = DB::table('lots') 
       ->select('id') 
       ->where('end',false) 
       ->where('end_auction', '<=', $end) 
       ->where('end_auction', '=>', $start) // Not work. Return 0 results 
    // if comment ->where('end_auction', '=>', $start) result 39 results with date 
    // between dates 
    // (start it's date of first element of table order by end_auction) 
       ->get(); 
     $lots_id = array(); 
     foreach ($lots as $value){ 
     $lots_id[] = $value->id; 
     } 
     dd($lots_id); 
} 

Antwort

1

Es scheint alles richtig , mit Ausnahme des Operators, der für den Parameter $start verwendet wird. Sie haben

->where('end_auction', '=>', $start) 

Und Sie sollten

->where('end_auction', '>=', $start) 

Beachten Sie den Unterschied zwischen => und >= haben. Der erste löst einen MySQL-Fehler aus. Sie könnten versuchen, diesen Code um einen try ... catch Block zu wickeln, und überprüfen Sie die Ausnahmebedingungsnachricht.

Sie können die ausgeführten Abfragen auch mit one of this answers protokollieren, um die ausgeführte Abfrage zu überprüfen, wenn Sie nicht die erwarteten Ergebnisse erhalten.

+1

Oh mein Gott ... Stunden über diese Frage für einen Fehler. Vielen Dank. Und noch ein Dankeschön für deine Tipps zum Aktivieren des Abfrageprotokolls auf Laravel – abkrim