2010-12-20 58 views
2

我在Orders和Sets之间建立了多对多的关系。一个订单可以包含多个集合,不同的集合可以属于不同的订单。因为您可以在订单中设置金额,所以应该有额外的金额栏。 因此,例如订单可以由5个“A组”和10个“B组”组成。在Doctrine 1的多对多连接表中添加额外的列

这是连接表的模式:

OrderSet:columns: 
amount: integer 
order_id: 
    type: integer 
    primary: true 
set_id: 
    type: integer 
    primary: true 

做工精细,到目前为止,我只是鸵鸟政策知道我怎么可以设置金额列的值。

这是我如何保存订单/套阶关系:

public function saveOrder($data){ 
    $tempSets = $data->sets; 
    $order = new Order(); 
    unset($data->sets); 
    $order->merge((array) $data); 

    foreach($tempSets as $set){ 
     $q = Doctrine_Query::create() 
     ->from('Set s') 
     ->where('s.id = ?', $set->id); 
     $set = $q->fetchOne(); 
     $order->sets->add($set); 
    } 
    $order->save(); 
} 

如何设置每组的量?

很多很多thanx你的帮助。 欢呼声,弗洛里安

回答

1

啊我发现这个职位: NHibernate: Many-to-many relationship with field in the relationship table

他们说...对待关系表的实体。

现在这就是它的工作方式:

public function saveOrder($data){ 
    $tempSets = $data->sets; 
    $order = new Order(); 
    unset($data->sets); 
    $order->merge((array) $data); 
    $order->save(); //save order first to make the order id available 

    foreach($tempSets as $set){   
     $orderSet = new OrderSet(); //create an object of the Class representing the relation table 
     $orderSet->order_id = $order->id; 
     $orderSet->set_id = $set->id; 
     $orderSet->amount = $set->amount; 
     $orderSet->save(); 
    } 
} 

希望可以帮助别人了。

干杯, florian