Я хочу добавить where
предложения к запросу, основанные на определенных условиях, проблема в том, что при проверке, вернул ли он строку из базы данных, он всегда возвращает true.
Если я сделаю запрос в одну строку, например, так:
$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
}
Заявление $test->first();
выполняет запрос и возвращает первый результат, но вы никому не присваиваете этот результат, поэтому $test
по-прежнему просто объект запроса, который всегда будет true
как вы видите. Если вы назначаете это на что-то другое, а затем проверяете это, оно должно работать.
$example = $test->first();
if ($example) { ...
Других решений пока нет …