0

在一个 Doctrine 1.2 项目中,我们有一个用户

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

用他的 PaymentMethods

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 的用户),当我尝试保存它时。

我做错了什么(逻辑问题)还是这是一个教义错误?

4

1 回答 1

0

为什么要两次定义付款方式?

你的外键PaymentMethodpayment_method. 所以,如果你定义一次,就可以了。

你可以试试:

$user = new User();

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

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

set方法使用关系名称来定义关系。

于 2013-01-30T08:43:27.157 回答