Добавьте дополнительный столбец в таблицу соединений многие-ко-многим в Учении 1 - PullRequest
2 голосов
/ 20 декабря 2010

Я установил отношения «многие ко многим» между ордерами и сетами.Орден может содержать много комплектов, а разные комплекты могут принадлежать разным ордерам.Поскольку вы можете установить сумму для набора в заказе, должен быть дополнительный столбец для суммы.Так, например, ордер может состоять из 5 х «Set A» и 10 х «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();
}

Как установить сумму каждого набора?

Огромное спасибо за вашу помощь.ура, Флориан

1 Ответ

1 голос
/ 21 декабря 2010

ах я нашел этот пост: NHibernate: отношение «многие ко многим» с полем в таблице отношений

они говорят ... обрабатывать таблицу отношений как сущность.

вот так вот работает:

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();
    }
}

надеюсь, что это может помочь и кому-то еще.

ура, Флориан

...