在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?
答案 0 :(得分:0)
为什么要两次定义付款方式?
PaymentMethod
的外键是payment_method
。所以,如果你定义一次,那就没关系。
您可以尝试:
$user = new User();
$paymentMethod = new PaymentMethod();
$paymentMethod->setUser($user);
$paymentMethod->save();
$user->setDefaultPaymentMethod($paymentMethod);
$user->save();
set
方法使用关系名称来定义关系。