0

Doctrine 1.2 プロジェクトでは User を持っています

User:
  columns:
    id:
      type: integer(4)
      autoincrement: true
      primary: true
    payment_method:
      type: integer(4)
  relations:
    DefaultPaymentMethod:
      class: PaymentMethod
      local: payment_method
      foreignAlias: Users
      foreign: id
      type: one

彼の支払い方法で

PaymentMethod:
  actAs:
    BS_Db_Template_SoftDelete:
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    user:
      type: integer(4)
  relations:
    User:
      local: user
      foreign: id
      foreignAlias: PaymentMethods
      type: one

彼の支払い方法とデフォルトの支払い方法のいずれかを設定しようとすると...

$user = new User();

$paymentMethod = new PaymentMethod();
$paymentMethod->set('User',$user);

$user->set('DefaultPaymentMethod',$paymentMethod);

$user->save();

...この行

$user->set('DefaultPaymentMethod',$paymentMethod);

...保存しようとすると、支払い方法を削除します(そのため、 PaymentMethod のユーザーは設定されません)。

私は何か間違ったことをしていますか (論理的な問題)、それとも Doctrine のバグですか?

4

1 に答える 1

0

支払い方法を 2 回定義したのはなぜですか?

への外部キーPaymentMethodは ですpayment_method。ですから、一度定義すればOKです。

あなたはそれを試すことができます:

$user = new User();

$paymentMethod = new PaymentMethod();
$paymentMethod->setUser($user);
$paymentMethod->save();

$user->setDefaultPaymentMethod($paymentMethod);
$user->save();

setメソッドは、リレーション名を使用してリレーションを定義します。

于 2013-01-30T08:43:27.157 に答える