我正在PhpStorm上开发我的Prestashop网站,但我无法解决这个问题。我在本地主机上工作,并成功地将PhpStorm连接到MySQL服务器。
现在,PhpStorm抛出诸如“无法解析表'${_DB_PREFIX_}cms'”之类的警告。Prestashop对表名使用前缀,而且PhpStorm似乎无法解析那些带有前缀的表。
有办法解决这个问题吗?
以下是Prestashop-1.6源的代码示例:
$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`';
发布于 2016-01-06 11:01:16
编辑:在撰写文章时(2016年)没有解决这个问题。但从2018年起,正如克里斯蒂安的回答中提到的,你现在可以使用在SQL查询中使用常量了。
事实上,没有办法处理这件事。但你可以禁止这种警告的检查。
File
> Settings
> Editor
> Inspections
SQL
Unresolved reference
发布于 2016-06-01 13:29:11
之所以不能工作,是因为您很可能只加载一个模式,您需要加载information_schema.*
为此,转到右上角的“数据库”选项卡,右键单击并选择“属性”,然后添加MySQL数据库。
现在,您将有一个名为Data Sources and Drivers
的屏幕,它应该打开一个名为General
的选项卡,单击名为Schemas
的第三个选项卡,然后将information_schema.*
添加到这个加载模式列表中。
单击apply和now,然后PhpStorm将知道您的数据库结构,然后智能地与您一起工作,从而删除所有错误。
发布于 2018-08-07 15:54:46
编辑:作为这里提到的,这已在PhpStorm 2018.2中得到修正,但仅用于常量。
我有一个解决方案,不涉及丢弃您的IDE。)然而,一个警告:这是一个丑陋的黑客™,没有保证。
'._DB_PREFIX_.'cms
将变成${_DB_PREFIX_}cms
请注意,您可能必须使用backticks来避免由于花括号而破坏sql语法。
https://stackoverflow.com/questions/34631409
复制相似问题