Немного предыстории: я создаю приложение на Laravel 5.6.33 (PHP 7.2 с sqlite 3).
Итак, у меня есть странный случай, когда в тесте я ожидаю исключения, но оно никогда не генерируется.Поэтому я начал копать и обнаружил, что Laravel не создает исключений для недопустимых / несуществующих столбцов в предложении where, если драйвер базы данных - sqlite.Следующий код просто возвращает пустую коллекцию вместо того, чтобы выдавать исключение.
\App\Tag::where('notAColumn', 'foo')->get();
Это странно, и я проверил повсеместно, чтобы убедиться, что это не так с моей конфигурацией, и не нашел ничего неуместного.Debug установлен в true и т. Д. Я запускаю этот код для тестирования приложения с использованием базы данных sqlite в памяти.
Еще одна вещь, которую я заметил, заключалась в том, что если я использую whereRaw
вместо where
, исключения выдаются, как и ожидалось.так, например, следующее выдает исключение.
\App\Tag::whereRaw('notAColumn = "foo"')->get();
Кто-нибудь знает, почему это возможно?