【发布时间】:2018-09-29 12:40:00
【问题描述】:
一点背景知识:我正在 Laravel 5.6.33(PHP 7.2 和 sqlite 3)上构建一个应用程序。
所以我有一个奇怪的情况,在测试中我期待一个异常但它永远不会被抛出。所以我去挖掘发现,如果数据库驱动程序是 sqlite,Laravel 不会在 where 子句中为无效/不存在的列抛出异常。下面的代码只是返回一个空集合而不是抛出异常。
\App\Tag::where('notAColumn', 'foo')->get();
这很奇怪,我检查了所有地方,看看我的配置是否有问题,并没有发现任何不合适的地方。 Debug 设置为 true 等。我运行此代码以使用内存中的 sqlite 数据库测试应用程序。
我注意到的另一件事是,如果我使用whereRaw 而不是where,则会按预期抛出异常。所以例如下面的抛出一个异常。
\App\Tag::whereRaw('notAColumn = "foo"')->get();
有人知道为什么会这样吗?
【问题讨论】: