これには簡単な解決策があると確信していますが、何が起こっているのかわかりません。aPayment
と呼ばれるエンティティと、 と と呼ばれる他の 2 つのエンティティがUser
ありHousehold
ます。
AUser
には多くPayment
の があり、aHousehold
には多くPayment
の があります。これはすべて、このように YAML を使用する一方向の manyToOne 関係としてマップされます (うまくいけば、これはhttp://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/reference/associationPayment
のガイダンスに沿ったものになります) -mapping.html#many-to-one-unidirectional ) -
Payment:
type: entity
table: payments
id:
_id:
type: integer
column: payment_id
generator:
strategy: AUTO
manyToOne:
_user:
targetEntity: Application_Model_User
joinColumn:
name: user_id
referencedColumnName: payment_id
_household:
targetEntity: Application_Model_Household
joinColumn:
name: household_id
referencedColumnName: payment_id
データベースに関しては、 と の 3 つのテーブルがusers
ありpayments
ますhouseholds
。テーブルには (そのpayments
主キーに加えて) と という名前の 2 つの列がuser_id
ありhousehold_id
、これらは他の 2 つのテーブルの主キーに対応しています。
問題は、新しいものを永続化しようとするとPayment
、mySql からエラーが返され、のuser_id
列をpayments
null にすることはできないということです。いくつかの掘り下げにより、教義がINSERT ステートメントのとnull
の両方に提供されていることが確立されました。オブジェクトグラフは間違いなく正しいです。user_id
household_id
さらに、次の警告が表示されます。
Notice: Undefined index: payment_id in [..]/library/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 511
Notice: Undefined index: in [..]/library/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 511
Notice: Undefined index: payment_id in [..]/library/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 511
Notice: Undefined index: in [..]/library/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 511
問題の がマッピングの spayment_id
から来ていること、およびインデックスが定義されていないことを立証しました。これは、配列ドクトリンが検索している関係の反対側、つまり 、またはからのフィールドが含まれているためです。でも、きっとそんなはずないですよね?ガイドに従ったと思いますが、うまくいきません。referencedColumnName
Household
User
私はZend Frameworkを使用していますが、それが役立つ場合は、コードに特別なことは何もありません. マッピングの問題だと確信しています。
ありがとう