Laravel: DB, где возвращают true, когда сравнивают с (логическим) false - PullRequest
0 голосов
/ 05 июля 2019

Почему, когда я передаю false в Model::where() и затем пытаюсь получить элемент first(), он всегда возвращает мне первый элемент вместо null?

Пример:

У меня есть Referrerмодель с hash_id = 123aSd456fGh

, и я пытаюсь получить это, как показано ниже:

$requestReferrer = false;

$referrer = Referrer::where('hash_id', $requestReferrer)->first();
dd($referrer); // returns first Referrer model with hash_id = 123aSd456fGh

FYI

когда я передаю ноль в обмен на ложь, он возвращает ноль.

1 Ответ

1 голос
/ 05 июля 2019

Причина: SQL Server автоматически изменит значение бита на значение varchar, равное true или false.

Там работает следующее:

$requestReferrer=false;
$referrer = Referrer::where('hash_id', "$requestReferrer")->first();

Или

$requestReferrer = 'false';
$referrer=Referrer::where('hash_id',$requestReferrer)->first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...