2010-12-20 5 views
2

Orders와 Sets 사이에 많은 관계를 설정했습니다. 주문에는 많은 세트가 포함될 수 있으며 다른 세트는 다른 주문에 속할 수 있습니다. 주문에서 세트 금액을 설정할 수 있으므로 금액에 대한 추가 열이 있어야합니다. 예. 명령은 5 x "세트 A"와 10 x "세트 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(); 
} 

가 어떻게 각 세트의 양을 설정할 수 있습니다?

많은 도움을 주신다면 감사합니다. 환호, 플로리안 내가이 게시물을 발견

답변

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

관련 문제