że mam następujące klasy:Jak usunąć wiele elementów w relacji ManyToMany w Doctrine 2?
class Store
{
/**
* @ManyToMany(targetEntity="PaymentMethod")
*/
protected $paymentMethods;
}
class PaymentMethod
{
}
Kiedy usunąć (lub po prostu wyłączyć, bez faktycznie usunięcie z bazy danych) w PaymentMethod
chcielibyśmy że ten paymentMethod
zostanie usunięty ze wszystkich Store::$paymentMethods
kolekcjach.
Do tej pory używaliśmy surowe zapytań SQL na stole połączeniowej za to:
DELETE FROM StorePaymentMethod WHERE paymentMethodId = ?
Czy istnieje sposób, aby to zrobić w doktrynie, najlepiej w DQL?
Pozwól, że to wyjaśnię. chcesz usunąć usunięte metody płatności z listy w klasie Sklep? usunięcie go z DB nie usunie go z listy. – jere
Jeśli jest to wiele do wielu, czy nie możesz po prostu ustawić kolekcji '$ stores' w' PaymentMethod' na pustą kolekcję i kontynuować ją? Będziesz musiał unieważnić wszystkie obiekty "Store" w pamięci, aby upewnić się, że ich wzajemne powiązania nie zachowały rekordów. Chociaż w idealnym świecie, metody accessorów, które piszesz, aby wykonać puste, przechodzą przez 'Sklepy' usuwające odwrotne linki. – Orbling