2017-07-20 3 views
0

Ich versuche, Zeilen aus der Datenbank durch Anwenden eines Bereichs von zwei Daten zu holen. Anfang und EndeZeilen aus einer Reihe von Datumsangaben in Laravel erhalten

Dies ist ein Testdaten.

Collection {#258 ▼ 
    #items: array:4 [▼ 
    0 => Customer_history {#237 ▶} 
    1 => Customer_history {#260 ▶} 
    2 => Customer_history {#261 ▶} 
    3 => Customer_history {#262 ▼ 
     #attributes: array:12 [▼ 
     "ch_id" => 1 
     "customer_id" => 1 
     "invoice_id" => 12 
     "created_at" => "2017-07-17 22:57:55" 
     "updated_at" => "2017-07-17 22:57:55" 
     "branch_id" => 1 
     "salesman_id" => 1 
     "remarks" => "" 
     "invoice_no" => "" 
     "advance" => "" 
     "is_delivered" => 1 
     "is_paid" => 1 
     ] 
    } 
    ] 
} 

Wie Sie sehen ein zwei gibt, die Datum 2017-07-17 Jetzt hat ist, wenn ich Abfrage mit zwei Terminen

erstellt angewendet
$from = date_create("2017-07-17"); 
$till = date_create("2017-07-17"); 

$customer_histories = Customer_history::leftJoin('invoices AS i', 'i.invoice_id', 'customer_histories.invoice_id') 
     ->where('is_paid','=',1) 
     ->whereBetween('customer_histories.created_at', [$from,$till]) 
     ->get(); 

Diese Rückkehr keine Zeilen, und es sollte return 1 Zeile haben! Ich denke, ich vermisse etwas. Kann mir jemand helfen, was ausgelassen oder geändert werden sollte, damit es funktioniert?

Antwort

1

Versuchen Sie dies. entfernen Sie diese Zeilen

$from = date_create("2017-07-17"); 
$till = date_create("2017-07-17"); 

Und setzen diese Abfrage

$customer_histories = Customer_history::leftJoin('invoices AS i', 'i.invoice_id', 'customer_histories.invoice_id') 
    ->where('is_paid','=',1) 
    ->whereRaw('DATE_FORMAT(customer_histories.created_at, "%Y-%m-%d") BETWEEN ? AND ?', [ $from, $till]) 
    ->get(); 
+0

Dank! es funktionierte :) – Alen

Verwandte Themen