首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PhpStorm中解析带有前缀的SQL表?

如何在PhpStorm中解析带有前缀的SQL表?
EN

Stack Overflow用户
提问于 2016-01-06 10:57:08
回答 4查看 3.2K关注 0票数 6

我正在PhpStorm上开发我的Prestashop网站,但我无法解决这个问题。我在本地主机上工作,并成功地将PhpStorm连接到MySQL服务器。

现在,PhpStorm抛出诸如“无法解析表'${_DB_PREFIX_}cms'”之类的警告。Prestashop对表名使用前缀,而且PhpStorm似乎无法解析那些带有前缀的表。

有办法解决这个问题吗?

以下是Prestashop-1.6源的代码示例:

代码语言:javascript
运行
复制
$sql = 'SELECT c.`id_cms`, cl.`meta_title`, cl.`link_rewrite`
    FROM `'._DB_PREFIX_.'cms` c
    INNER JOIN `'._DB_PREFIX_.'cms_shop` cs
    ON (c.`id_cms` = cs.`id_cms`)
    INNER JOIN `'._DB_PREFIX_.'cms_lang` cl
    ON (c.`id_cms` = cl.`id_cms`)
    WHERE c.`id_cms_category` = '.(int)$id_cms_category.'
    AND cs.`id_shop` = '.(int)$id_shop.'
    AND cl.`id_lang` = '.(int)$id_lang.
    $where_shop.'
    AND c.`active` = 1
    ORDER BY `position`';

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-06 11:01:16

编辑:在撰写文章时(2016年)没有解决这个问题。但从2018年起,正如克里斯蒂安的回答中提到的,你现在可以使用在SQL查询中使用常量了。

事实上,没有办法处理这件事。但你可以禁止这种警告的检查。

  1. 打开File > Settings > Editor > Inspections
  2. 扩展SQL
  3. 取消检查Unresolved reference
票数 -1
EN

Stack Overflow用户

发布于 2016-06-01 13:29:11

之所以不能工作,是因为您很可能只加载一个模式,您需要加载information_schema.*

为此,转到右上角的“数据库”选项卡,右键单击并选择“属性”,然后添加MySQL数据库。

现在,您将有一个名为Data Sources and Drivers的屏幕,它应该打开一个名为General的选项卡,单击名为Schemas的第三个选项卡,然后将information_schema.*添加到这个加载模式列表中。

单击apply和now,然后PhpStorm将知道您的数据库结构,然后智能地与您一起工作,从而删除所有错误。

票数 11
EN

Stack Overflow用户

发布于 2018-08-07 15:54:46

编辑:作为这里提到的,这已在PhpStorm 2018.2中得到修正,但仅用于常量。

我有一个解决方案,不涉及丢弃您的IDE。)然而,一个警告:这是一个丑陋的黑客™,没有保证。

  1. 假设您已经连接到PhpStorm中的数据库,则为所需的db生成ddl (右键单击连接-> SQL脚本->生成DDL到剪贴板):

  1. 将内容粘贴到项目中的某个sql文件中。你应该把这个文件给我。
  2. 将此ddl文件中所有表的前缀替换为代码中的前缀。使用PhpStorm类型提示作为指南。例如,'._DB_PREFIX_.'cms将变成${_DB_PREFIX_}cms

请注意,您可能必须使用backticks来避免由于花括号而破坏sql语法。

  1. 将ddl添加到phpstorm项目中:

  1. 现在一切都应该运转起来:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34631409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档