Doctrine 1.2 hasOne覆盖hasMany Relation

时间:2013-01-30 08:28:11

标签: php doctrine doctrine-1.2

在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);

...当我尝试保存时,删除了他的付款方式(因此未设置UserMethod的用户)。

我做错了什么(逻辑问题)还是这是一个Doctrine bug?

1 个答案:

答案 0 :(得分:0)

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

PaymentMethod的外键是payment_method。所以,如果你定义一次,那就没关系。

您可以尝试:

$user = new User();

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

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

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