Ответ в самом низу, но опишу как делаю я, мне может тоже подскажут в комментах.
Обычно это два варианта:
1) Вы
не будете использовать релейшены. Тогда просто вытащишь объект и работаешь с ним.
2) Вы
будете использовать релейшены. Делай джоин\withJoin
В этом плане доктрина в симфони дружелюбнее, связь содержит инфу, но не содержит объект, т.е что-то типо промежуточного этапа. Как писали выше.
Сейв делаю линком:
$customer = Customer::findOne(123);
$order = new Order();
$order->subtotal = 100;
$order->link('customer', $customer);
В вышеприведённом примере, метод присвоит атрибуту customer_id объекта Order значение атрибута id объекта Customer и затем сохранит его в базу данных. Тоже самое можно делать и с промежуточными таблицами, линк автоматов вставит строчки в промежуточную таблицу.
При удалении можно использовать метод unlink() - он снимает все связи выставляя Id-шки объектов в null, а если передать с атрибутом $delete = true. Он удалит строку на связи в промежуточной таблице.
Ответ: Да, удалять и заново прописывать.