微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么对视图的 F3 数据库查询不适用于 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() 中使用视图,则在 MysqLsqlite 中一切正常。

$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 的元数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。