3

dbといくつかのfk関係を変更しました。スキーマを再構築してクラスを再構築した後、クラスを使用しようとするとエラーメッセージが表示されます

致命的なエラー:717行目のC:\ wamp \ www \ cbm_hr \ trunk \ cbm \ plugins \ cbmHrLibPlugin \ lib \ model \ om\BaseHrlibQualificationLevelQuery.phpでBaseHrlibQualificationLevelQuery::filterByHrlibQualification()を再宣言できません

スキーマを確認しましたが、同じテーブルに複数の列がありません。

関数の複数の宣言を引き起こす可能性がある他のことは何ですか?

4

2 に答える 2

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テーブルへの複数の参照があると思います。

それがお役に立てば幸いです。

于 2012-10-16T15:36:52.683 に答える
0

申し訳ありませんが、これに遅れていますが、問題の解決策はテーブルの構造にあります。同じ参照を指す2つの外部キーがありますが、そのうちの1つがテーブルを指していないため、1つしか表示されません。

解決

スクリプトを実行する

SHOW CREATE TABLE table_name

重複した外部キ​​ーを識別するため

次に、通常はコマンドで表示されないものを削除します

ALTER TABLE table_name DROP FOREIGN KEY `foreign_key_id`

次に、propelreverseを使用してスキーマを再生成します

あなたは行ってもいいはずです。

于 2015-10-01T19:54:33.437 に答える