2016-07-21 2 views
1

Я хочу добавить предложения where к запросу на основании определенных условий, проблема в том, что я проверяю, возвратил ли он строку из базы данных, которая всегда возвращает true.appending -> where() на основе условных выражений

Если я сделать запрос в одной строке следующим образом:

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

Он работает, как и следовало ожидать, если строка найдена это правда, и наоборот, но если я добавить к запросу, как это так, всегда верно (что имеет смысл, но как я могу проверить, что это на самом деле вернулся кое-что из БД?):

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

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

Что именно содержит '$ test' в том случае, когда он пуст? – bill

+0

@ Don'tPanic приятный! – user6562256

ответ

1

оператор $test->first(); выполняет запрос и возвращает первый результат, но вы не назначаем, что результат на что угодно, поэтому $test по-прежнему остается объектом запроса, который всегда будет оцениваться до true, как вы видите. Если вы назначаете его чему-то еще, а затем проверяете это, он должен работать.

$example = $test->first(); 

if ($example) { ... 
Смежные вопросы