我一直在努力实现基于Sazans库的多语言支持,但查询似乎对我没有用。
图书馆:https://github.com/sazan/MultiLang-Library-for-PyroCMS/blob/master/README
我的错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM (`default_navigation_links`) WHERE `navigation_group_id` = '1' ORDER BY `p' at line 2
SELECT *, translate("navigation", `id`, `"title"`, `"en"`, `title)` AS title FROM (`default_navigation_links`) WHERE `navigation_group_id` = '1' ORDER BY `position`
错误是抛出查询的原因。我相信函数translate没有定义,这就是它抛出错误的原因。
The query: $this->db ->select('*, translate("navigation", id, "title", "'.CURRENT_LANGUAGE.'", title) AS title');
我尝试通过phpmyadmin在我的数据库上运行函数设置查询(在项目页面中找到的查询)。当我添加它时 - 它没有返回错误,它没有“告诉我”它成功添加了该功能。
知道我该怎么办?
答案 0 :(得分:1)
问题不在于功能,它与CI的Active Record类有关。 CI AR类会自动使用$this->db ->select(...)
转义您选择的字段。因此,要使用我的存储函数,您必须通过将AR的select函数的第二个参数设置为false来关闭自动转义:
$this->db->select('*, translate("navigation", id, "title", "'.CURRENT_LANGUAGE.'", title) AS title', false);
它会起作用。干杯!