推进类重建后“基础查询”中的多个函数声明

时间:2012-10-15 14:02:06

标签: php symfony-1.4 propel

我修改了我的db和一些fk关系。重建模式和重建类后,我在尝试使用类

时收到错误消息
  

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

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

还有哪些其他因素会导致函数的多次声明?

2 个答案:

答案 0 :(得分:5)

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

我有:

<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属性(后者是必需的,因为Propel会在外表类中生成filterBySomething()函数,因此在我的情况下有多个filterByMenu()函数名称):

<foreign-key foreignTable="dish" phpName="soupDish" refPhpName="sMenu">
  <reference local="soup_id" foreign="id"/>
</foreign-key>
<foreign-key foreignTable="dish" phpName="mainDish" refPhpName="mMenu">
  <reference local="main_id" foreign="id"/>
</foreign-key>

所以我猜你有多个外键对HrlibQualification表有多个引用。

我希望有所帮助。

答案 1 :(得分:0)

抱歉,我迟到了,但问题的解决方案在于你的表的结构,你有两个外键指向同一个引用,但其中一个没有指向你的表,那个&#39; s为什么你只看到一个。

<强>溶液

执行脚本

SHOW CREATE TABLE table_name

识别重复的外键

然后删除一个通常是用命令

看不到的那个
ALTER TABLE table_name DROP FOREIGN KEY `foreign_key_id`

然后使用推进反向重新生成模式

你应该好好去。