为什么对视图的 F3 数据库查询不适用于 sqlite

Why are F3 database queries on views not working with sqlite

我正在使用 fatfree 框架设置 API 并想在开发中使用 sqlite。我遵循了文档 (https://fatfreeframework.com/3.7/databases)。在该页面的底部,我了解了如何在查询时使用包含连接的视图而不是连接。我认为这是个好主意。但是,它似乎在 mysql 中有效,但在 sqlite 中无效。

$prefs = new Mapper($this->db, 'userpreferences');
$prefs->load(array('login_id=?', $userLoginId));

在 mysql 这行得通。在 sqlite 中,这会产生以下错误:

PDO: near "FROM": syntax error

但是,如果在 exec() 中使用视图,在 mysql 和 sqlite 中一切正常。

$prefs = $this->db->exec('SELECT * FROM userpreferences WHERE login_id=?', $userLoginId);

这是一个(已知)错误还是我遗漏了什么? (php: 7.4, F3: 3.7.3, sqlite3: 3.32.2, mysql: 8.0.25)

我偶然发现了同样的问题,您可以通过编辑第 342 行的 lib/db/sql.php 文件来解决这个问题:https://github.com/jlazic/fatfree/commit/ad5a86819a60b51b124660fddd7ad5eec61ab48f

问题似乎是 sqlite 使用 type=view 作为视图,而 f3 仅查询 type=table.

的元数据