2010-12-20 57 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