2017-12-09 1 views
2

Hier ist mein Code:Warum where-Klausel die Abfrage nicht beeinflusst?

$tracking_codes_obj = new TrackingCode; 
$tracking_code = 140; 

if (!is_null($tracking_code)) 
    $tracking_codes_obj->where('tracking_code', $tracking_code); 

$tracking_codes = $tracking_codes_obj->orderBy('expired')->orderBy('id')->paginate(10); 

Wie Sie $tracking_code ist nicht null sehen können, so dass diese Bedingung true ist und dass where Klausel angewendet werden sollte. Aber das Ergebnis ist immer noch das gleiche wie wenn ich diesen Zustand komplett beseitige.

Warum und wie kann ich es beheben?

Antwort

3

Die korrekte Syntax ist:

$tracking_codes_obj = $tracking_codes_obj->where('tracking_code', $tracking_code); 
+1

oh .. du hast recht, danke. – stack

+0

Auch eine PHP Frage, wann genau sollte ich ein Objekt in eine Variable initialisieren und wann nicht? Zum Beispiel in einer Datenbankverbindung, keine Notwendigkeit, etwas zu initialisieren und alles wird angewendet mit '->'. d. h. $ db_con = neues PDO ("mysql: host = $ servername; dbname = $ dbname", $ username, $ password); $ db_con-> exec ("set names utf8"); ' – stack

1

Sie ersetzen müssen, wenn die Bedingung wie folgt aus:

if ($tracking_code != null) 

Statt

if (!is_null($tracking_code)) 

und Code wie folgt

sein
$tracking_codes_obj = new TrackingCode; 
$tracking_code = 140; 

if ($tracking_code != null) 
{ 
    $tracking_codes_obj = $tracking_codes_obj->where('tracking_code', $tracking_code); 
} 

$tracking_codes = $tracking_codes_obj->orderBy('expired')->orderBy('id')->paginate(10); 
+1

Ich bin mir nicht sicher, warum hast du gesagt, ich hätte' is_null() 'Funktion nicht benutzen sollen, aber trotzdem würde dein Code auch funktionieren, weil das Objekt initialisiert wurde . Vielen Dank – stack

Verwandte Themen