我在Orders和Sets之间建立了多对多的关系。订单可以包含许多集合,不同的集合可以属于不同的订单。因为您可以为订单中的集合设置金额,所以应该有额外的金额列。 所以例如订单可以包含5 x“Set A”和10 x“Set B”。
这是连接表的架构:
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();
}
如何设定每套的数量?
为了你的帮助,有很多对很多人。 欢呼,弗洛里安
答案 0 :(得分:1)
他们说...将关系表视为实体。
现在就是它的工作方式:
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();
}
}
希望也可以帮助别人。
欢呼声, 弗洛里安