2016-07-21 12 views
1

Ich möchte where Klauseln an die Abfrage basierend auf bestimmten Bedingungen anhängen, das Problem ist, dass die Art und Weise, die ich überprüfe, ob es eine Zeile aus der Datenbank zurückgibt es immer wahr zurückgibt.Anfügen -> Where() -Klauseln basierend auf Bedingungen

Wenn ich eine Abfrage in einer Zeile wie folgt:

$test= DB::table('users')->where('email', $email)->where('password', $password)->first(); 

Es funktioniert wie erwartet, wenn eine Zeile gefunden wird es wahr ist, und umgekehrt, aber wenn ich auf die Abfrage anhängen, wie es so ist, immer wahr ist (was Sinn macht, aber wie kann ich überprüfen, dass es tatsächlich etwas aus dem db zurückgegeben?):

$test= DB::table('users'); 
$test->where('email', $email); 
$test->where('password', $password); 
$test->first(); 

if ($test) { 
     // always true 
} 
+0

Was genau enthält '$ test' in dem Fall, wenn es leer ist? – bill

+0

@ Don'tPanic netter! – user6562256

Antwort

1

die Anweisung $test->first(); die Abfrage aus und gibt das erste Ergebnis, aber Sie sind die Zuordnung nicht, dass Ergebnis zu irgendetwas, so $test ist immer noch nur das Abfrageobjekt, welches immer true auswertet, wie Sie sehen. Wenn Sie es etwas anderem zuweisen und dann überprüfen, sollte es funktionieren.

$example = $test->first(); 

if ($example) { ... 
Verwandte Themen