Php “内部多功能声明”;“基本查询”;后推进级重建

Php “内部多功能声明”;“基本查询”;后推进级重建,php,symfony-1.4,propel,Php,Symfony 1.4,Propel,我修改了我的db和一些fk关系。在重建模式和类之后,我在尝试使用该类时收到一条错误消息 致命错误:无法在第717行的C:\wamp\www\cbm\u hr\trunk\cbm\plugins\cbmHrLibPlugin\lib\model\om\BaseHrlibQualificationLevelQuery.php中重新声明BaseHrlibQualificationLevelQuery::Filterbyhrlibqualificationlevelquery() 我检查了架构,但同一个

我修改了我的db和一些fk关系。在重建模式和类之后,我在尝试使用该类时收到一条错误消息

致命错误:无法在第717行的C:\wamp\www\cbm\u hr\trunk\cbm\plugins\cbmHrLibPlugin\lib\model\om\BaseHrlibQualificationLevelQuery.php中重新声明BaseHrlibQualificationLevelQuery::Filterbyhrlibqualificationlevelquery()

我检查了架构,但同一个表中没有多个列


还有什么事情会导致函数的多次声明呢?

我刚刚遇到了一个类似的问题。虽然您的问题没有提到同一个外键表是否有多个外键,但我怀疑这就是问题所在

我有:

<foreign-key foreignTable="dish" phpName="Dish" refPhpName="Menu">
  <reference local="soup_id" foreign="id"/>
</foreign-key>
<foreign-key foreignTable="dish" phpName="Dish" refPhpName="Menu">
  <reference local="main_id" foreign="id"/>
</foreign-key>

我得到了这个错误信息:

PHP致命错误:无法重新声明BaseMenuQuery::filterByDish()

然后我更改了phpName和refPhpName属性(需要后者,因为spreep将在外部表类中生成filterBySomething()函数,因此在我的示例中有多个filterByMenu()函数名):


所以我猜您有多个外键对HrlibQualification表的引用


我希望这会有所帮助。

很抱歉,我迟到了,但问题的解决方案在于表的结构,您有两个外键指向同一个引用,但其中一个外键没有指向表,这就是为什么您只看到一个外键

解决方案

执行脚本

SHOW CREATE TABLE table_name
要识别重复的外键

然后删除一个,通常是命令不可见的一个

ALTER TABLE table_name DROP FOREIGN KEY `foreign_key_id`
然后用spreep reverse重新生成您的模式


你应该准备好了。

/symfony推进:构建所有--仅类,
/symfony cc
,然后重试这是一个很好的开始,但你还没有真正回答OP的问题。试着给出更多的见解,或者一个合适的解决方案。OP问到“还有什么事情会导致函数的多个声明?”我想我的回答至少给出了一个可能的原因:同一个表有多个外键。不幸的是,我不知道任何其他原因,因为我昨天才开始使用Propel,所以我目前还不是这方面的专家。@Andrew我在has表格中设置了isCrossRef:True,是的,我还多次引用了HRLIB资格认证。当我移除isCrossRef时,它对我起了作用。我还没有检查不同的phpName和refPhpName,但我认为这也会起作用。谢谢
ALTER TABLE table_name DROP FOREIGN KEY `foreign_key_id`