教义 1.2 有一个覆盖有许多关系


Doctrine 1.2 hasOne overwrites hasMany Relation

在 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

用他的付款方式

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

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

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

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

您的外键PaymentMethodpayment_method。所以,如果你定义一次,没关系。

你可以试试:

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

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